182527734SSukumar Swaminathan /* 282527734SSukumar Swaminathan * CDDL HEADER START 382527734SSukumar Swaminathan * 482527734SSukumar Swaminathan * The contents of this file are subject to the terms of the 582527734SSukumar Swaminathan * Common Development and Distribution License (the "License"). 682527734SSukumar Swaminathan * You may not use this file except in compliance with the License. 782527734SSukumar Swaminathan * 8*8f23e9faSHans Rosenfeld * You can obtain a copy of the license at 9*8f23e9faSHans Rosenfeld * http://www.opensource.org/licenses/cddl1.txt. 1082527734SSukumar Swaminathan * See the License for the specific language governing permissions 1182527734SSukumar Swaminathan * and limitations under the License. 1282527734SSukumar Swaminathan * 1382527734SSukumar Swaminathan * When distributing Covered Code, include this CDDL HEADER in each 1482527734SSukumar Swaminathan * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1582527734SSukumar Swaminathan * If applicable, add the following below this CDDL HEADER, with the 1682527734SSukumar Swaminathan * fields enclosed by brackets "[]" replaced with your own identifying 1782527734SSukumar Swaminathan * information: Portions Copyright [yyyy] [name of copyright owner] 1882527734SSukumar Swaminathan * 1982527734SSukumar Swaminathan * CDDL HEADER END 2082527734SSukumar Swaminathan */ 2182527734SSukumar Swaminathan 2282527734SSukumar Swaminathan /* 23*8f23e9faSHans Rosenfeld * Copyright (c) 2004-2012 Emulex. All rights reserved. 2482527734SSukumar Swaminathan * Use is subject to license terms. 2582527734SSukumar Swaminathan */ 2682527734SSukumar Swaminathan 2782527734SSukumar Swaminathan #ifndef _EMLXS_MBOX_H 2882527734SSukumar Swaminathan #define _EMLXS_MBOX_H 2982527734SSukumar Swaminathan 3082527734SSukumar Swaminathan #ifdef __cplusplus 3182527734SSukumar Swaminathan extern "C" { 3282527734SSukumar Swaminathan #endif 3382527734SSukumar Swaminathan 3482527734SSukumar Swaminathan /* SLI 2/3 Mailbox defines */ 3582527734SSukumar Swaminathan 3682527734SSukumar Swaminathan #define MBOX_SIZE 256 3782527734SSukumar Swaminathan #define MBOX_EXTENSION_OFFSET MBOX_SIZE 3882527734SSukumar Swaminathan 3982527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT 4082527734SSukumar Swaminathan #define MBOX_EXTENSION_SIZE 1024 4182527734SSukumar Swaminathan #else 4282527734SSukumar Swaminathan #define MBOX_EXTENSION_SIZE 0 4382527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */ 4482527734SSukumar Swaminathan 4582527734SSukumar Swaminathan 4682527734SSukumar Swaminathan 4782527734SSukumar Swaminathan /* ==== Mailbox Commands ==== */ 4882527734SSukumar Swaminathan #define MBX_SHUTDOWN 0x00 /* terminate testing */ 4982527734SSukumar Swaminathan #define MBX_LOAD_SM 0x01 5082527734SSukumar Swaminathan #define MBX_READ_NV 0x02 5182527734SSukumar Swaminathan #define MBX_WRITE_NV 0x03 5282527734SSukumar Swaminathan #define MBX_RUN_BIU_DIAG 0x04 5382527734SSukumar Swaminathan #define MBX_INIT_LINK 0x05 5482527734SSukumar Swaminathan #define MBX_DOWN_LINK 0x06 5582527734SSukumar Swaminathan #define MBX_CONFIG_LINK 0x07 5682527734SSukumar Swaminathan #define MBX_PART_SLIM 0x08 5782527734SSukumar Swaminathan #define MBX_CONFIG_RING 0x09 5882527734SSukumar Swaminathan #define MBX_RESET_RING 0x0A 5982527734SSukumar Swaminathan #define MBX_READ_CONFIG 0x0B 6082527734SSukumar Swaminathan #define MBX_READ_RCONFIG 0x0C 6182527734SSukumar Swaminathan #define MBX_READ_SPARM 0x0D 6282527734SSukumar Swaminathan #define MBX_READ_STATUS 0x0E 6382527734SSukumar Swaminathan #define MBX_READ_RPI 0x0F 6482527734SSukumar Swaminathan #define MBX_READ_XRI 0x10 6582527734SSukumar Swaminathan #define MBX_READ_REV 0x11 6682527734SSukumar Swaminathan #define MBX_READ_LNK_STAT 0x12 6782527734SSukumar Swaminathan #define MBX_REG_LOGIN 0x13 6882527734SSukumar Swaminathan #define MBX_UNREG_LOGIN 0x14 /* SLI2/3 */ 6982527734SSukumar Swaminathan #define MBX_UNREG_RPI 0x14 /* SLI4 */ 7082527734SSukumar Swaminathan #define MBX_READ_LA 0x15 7182527734SSukumar Swaminathan #define MBX_CLEAR_LA 0x16 7282527734SSukumar Swaminathan #define MBX_DUMP_MEMORY 0x17 7382527734SSukumar Swaminathan #define MBX_DUMP_CONTEXT 0x18 7482527734SSukumar Swaminathan #define MBX_RUN_DIAGS 0x19 7582527734SSukumar Swaminathan #define MBX_RESTART 0x1A 7682527734SSukumar Swaminathan #define MBX_UPDATE_CFG 0x1B 7782527734SSukumar Swaminathan #define MBX_DOWN_LOAD 0x1C 7882527734SSukumar Swaminathan #define MBX_DEL_LD_ENTRY 0x1D 7982527734SSukumar Swaminathan #define MBX_RUN_PROGRAM 0x1E 8082527734SSukumar Swaminathan #define MBX_SET_MASK 0x20 8182527734SSukumar Swaminathan #define MBX_SET_VARIABLE 0x21 8282527734SSukumar Swaminathan #define MBX_UNREG_D_ID 0x23 8382527734SSukumar Swaminathan #define MBX_KILL_BOARD 0x24 8482527734SSukumar Swaminathan #define MBX_CONFIG_FARP 0x25 8582527734SSukumar Swaminathan #define MBX_BEACON 0x2A 8682527734SSukumar Swaminathan #define MBX_READ_VPI 0x2B 8782527734SSukumar Swaminathan #define MBX_CONFIG_MSIX 0x30 8882527734SSukumar Swaminathan #define MBX_HEARTBEAT 0x31 8982527734SSukumar Swaminathan #define MBX_WRITE_VPARMS 0x32 9082527734SSukumar Swaminathan #define MBX_ASYNC_EVENT 0x33 9182527734SSukumar Swaminathan 9282527734SSukumar Swaminathan #define MBX_READ_EVENT_LOG_STATUS 0x37 9382527734SSukumar Swaminathan #define MBX_READ_EVENT_LOG 0x38 9482527734SSukumar Swaminathan #define MBX_WRITE_EVENT_LOG 0x39 9582527734SSukumar Swaminathan #define MBX_NV_LOG 0x3A 9682527734SSukumar Swaminathan #define MBX_PORT_CAPABILITIES 0x3B 9782527734SSukumar Swaminathan #define MBX_IOV_CONTROL 0x3C 9882527734SSukumar Swaminathan #define MBX_IOV_MBX 0x3D 9982527734SSukumar Swaminathan 10082527734SSukumar Swaminathan 10182527734SSukumar Swaminathan #define MBX_CONFIG_HBQ 0x7C /* SLI3 */ 10282527734SSukumar Swaminathan #define MBX_LOAD_AREA 0x81 10382527734SSukumar Swaminathan #define MBX_RUN_BIU_DIAG64 0x84 10482527734SSukumar Swaminathan #define MBX_GET_DEBUG 0x86 10582527734SSukumar Swaminathan #define MBX_CONFIG_PORT 0x88 10682527734SSukumar Swaminathan #define MBX_READ_SPARM64 0x8D 10782527734SSukumar Swaminathan #define MBX_READ_RPI64 0x8F 10882527734SSukumar Swaminathan #define MBX_CONFIG_MSI 0x90 109*8f23e9faSHans Rosenfeld #define MBX_REG_LOGIN64 0x93 /* SLI2/3 */ 110*8f23e9faSHans Rosenfeld #define MBX_REG_RPI 0x93 /* SLI4 */ 111*8f23e9faSHans Rosenfeld #define MBX_READ_LA64 0x95 /* SLI2/3 */ 112*8f23e9faSHans Rosenfeld #define MBX_READ_TOPOLOGY 0x95 /* SLI4 */ 113*8f23e9faSHans Rosenfeld #define MBX_REG_VPI 0x96 /* NPIV */ 114*8f23e9faSHans Rosenfeld #define MBX_UNREG_VPI 0x97 /* NPIV */ 11582527734SSukumar Swaminathan #define MBX_FLASH_WR_ULA 0x98 11682527734SSukumar Swaminathan #define MBX_SET_DEBUG 0x99 11782527734SSukumar Swaminathan #define MBX_SLI_CONFIG 0x9B 11882527734SSukumar Swaminathan #define MBX_LOAD_EXP_ROM 0x9C 11982527734SSukumar Swaminathan #define MBX_REQUEST_FEATURES 0x9D 12082527734SSukumar Swaminathan #define MBX_RESUME_RPI 0x9E 12182527734SSukumar Swaminathan #define MBX_REG_VFI 0x9F 12282527734SSukumar Swaminathan #define MBX_REG_FCFI 0xA0 12382527734SSukumar Swaminathan #define MBX_UNREG_VFI 0xA1 12482527734SSukumar Swaminathan #define MBX_UNREG_FCFI 0xA2 12582527734SSukumar Swaminathan #define MBX_INIT_VFI 0xA3 12682527734SSukumar Swaminathan #define MBX_INIT_VPI 0xA4 12782527734SSukumar Swaminathan #define MBX_ACCESS_VDATA 0xA5 12882527734SSukumar Swaminathan #define MBX_MAX_CMDS 0xA6 12982527734SSukumar Swaminathan 13082527734SSukumar Swaminathan 13182527734SSukumar Swaminathan /* 13282527734SSukumar Swaminathan * Define Status 13382527734SSukumar Swaminathan */ 13482527734SSukumar Swaminathan #define MBX_SUCCESS 0x0 13582527734SSukumar Swaminathan #define MBX_FAILURE 0x1 13682527734SSukumar Swaminathan #define MBXERR_NUM_IOCBS 0x2 13782527734SSukumar Swaminathan #define MBXERR_IOCBS_EXCEEDED 0x3 13882527734SSukumar Swaminathan #define MBXERR_BAD_RING_NUMBER 0x4 13982527734SSukumar Swaminathan #define MBXERR_MASK_ENTRIES_RANGE 0x5 14082527734SSukumar Swaminathan #define MBXERR_MASKS_EXCEEDED 0x6 14182527734SSukumar Swaminathan #define MBXERR_BAD_PROFILE 0x7 14282527734SSukumar Swaminathan #define MBXERR_BAD_DEF_CLASS 0x8 14382527734SSukumar Swaminathan #define MBXERR_BAD_MAX_RESPONDER 0x9 14482527734SSukumar Swaminathan #define MBXERR_BAD_MAX_ORIGINATOR 0xA 14582527734SSukumar Swaminathan #define MBXERR_RPI_REGISTERED 0xB 14682527734SSukumar Swaminathan #define MBXERR_RPI_FULL 0xC 14782527734SSukumar Swaminathan #define MBXERR_NO_RESOURCES 0xD 14882527734SSukumar Swaminathan #define MBXERR_BAD_RCV_LENGTH 0xE 14982527734SSukumar Swaminathan #define MBXERR_DMA_ERROR 0xF 15082527734SSukumar Swaminathan #define MBXERR_NOT_SUPPORTED 0x10 15182527734SSukumar Swaminathan #define MBXERR_UNSUPPORTED_FEATURE 0x11 15282527734SSukumar Swaminathan #define MBXERR_UNKNOWN_COMMAND 0x12 153*8f23e9faSHans Rosenfeld #define MBXERR_BAD_IP_BIT 0x13 154*8f23e9faSHans Rosenfeld #define MBXERR_BAD_PCB_ALIGN 0x14 155*8f23e9faSHans Rosenfeld #define MBXERR_BAD_HBQ_ID 0x15 156*8f23e9faSHans Rosenfeld #define MBXERR_BAD_HBQ_STATE 0x16 157*8f23e9faSHans Rosenfeld #define MBXERR_BAD_HBQ_MASK_NUM 0x17 158*8f23e9faSHans Rosenfeld #define MBXERR_BAD_HBQ_MASK_SUBSET 0x18 159*8f23e9faSHans Rosenfeld #define MBXERR_HBQ_CREATE_FAIL 0x19 160*8f23e9faSHans Rosenfeld #define MBXERR_HBQ_EXISTING 0x1A 161*8f23e9faSHans Rosenfeld #define MBXERR_HBQ_RSPRING_FULL 0x1B 162*8f23e9faSHans Rosenfeld #define MBXERR_HBQ_DUP_MASK 0x1C 163*8f23e9faSHans Rosenfeld #define MBXERR_HBQ_INVAL_GET_PTR 0x1D 164*8f23e9faSHans Rosenfeld #define MBXERR_BAD_HBQ_SIZE 0x1E 165*8f23e9faSHans Rosenfeld #define MBXERR_BAD_HBQ_ORDER 0x1F 166*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_ID 0x20 167*8f23e9faSHans Rosenfeld 168*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_VFI 0x30 169*8f23e9faSHans Rosenfeld 170*8f23e9faSHans Rosenfeld #define MBXERR_FLASH_WRITE_FAILED 0x100 171*8f23e9faSHans Rosenfeld 172*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_LINKSPEED 0x500 173*8f23e9faSHans Rosenfeld 174*8f23e9faSHans Rosenfeld #define MBXERR_BAD_REDIRECT 0x900 175*8f23e9faSHans Rosenfeld #define MBXERR_RING_ALREADY_CONFIG 0x901 176*8f23e9faSHans Rosenfeld 177*8f23e9faSHans Rosenfeld #define MBXERR_RING_INACTIVE 0xA00 178*8f23e9faSHans Rosenfeld 179*8f23e9faSHans Rosenfeld #define MBXERR_RPI_INACTIVE 0xF00 180*8f23e9faSHans Rosenfeld 181*8f23e9faSHans Rosenfeld #define MBXERR_NO_ACTIVE_XRI 0x1100 182*8f23e9faSHans Rosenfeld #define MBXERR_XRI_NOT_ACTIVE 0x1101 183*8f23e9faSHans Rosenfeld 184*8f23e9faSHans Rosenfeld #define MBXERR_RPI_INUSE 0x1400 185*8f23e9faSHans Rosenfeld 186*8f23e9faSHans Rosenfeld #define MBXERR_NO_LINK_ATTENTION 0x1500 187*8f23e9faSHans Rosenfeld 188*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_SLI_MODE 0x8800 189*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_HOST_PTR 0x8801 190*8f23e9faSHans Rosenfeld #define MBXERR_CANT_CFG_SLI_MODE 0x8802 191*8f23e9faSHans Rosenfeld #define MBXERR_BAD_OVERLAY 0x8803 192*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_FEAT_REQ 0x8804 193*8f23e9faSHans Rosenfeld 194*8f23e9faSHans Rosenfeld #define MBXERR_CONFIG_CANT_COMPLETE 0x88FF 195*8f23e9faSHans Rosenfeld 196*8f23e9faSHans Rosenfeld #define MBXERR_DID_ALREADY_REGISTERED 0x9600 197*8f23e9faSHans Rosenfeld #define MBXERR_DID_INCONSISTENT 0x9601 198*8f23e9faSHans Rosenfeld #define MBXERR_VPI_TOO_LARGE 0x9603 199*8f23e9faSHans Rosenfeld 200*8f23e9faSHans Rosenfeld #define MBXERR_STILL_ASSOCIATED 0x9700 201*8f23e9faSHans Rosenfeld 202*8f23e9faSHans Rosenfeld #define MBXERR_INVALID_VF_STATE 0x9F00 203*8f23e9faSHans Rosenfeld #define MBXERR_VFI_ALREADY_REGISTERED 0x9F02 204*8f23e9faSHans Rosenfeld #define MBXERR_VFI_TOO_LARGE 0x9F03 205*8f23e9faSHans Rosenfeld 206*8f23e9faSHans Rosenfeld #define MBXERR_LOAD_FW_FAILED 0xFFFE 207*8f23e9faSHans Rosenfeld #define MBXERR_FIND_FW_FAILED 0xFFFF 20882527734SSukumar Swaminathan 20982527734SSukumar Swaminathan /* Driver special codes */ 21082527734SSukumar Swaminathan #define MBX_DRIVER_RESERVED 0xF9 /* Set to lowest drv status */ 21182527734SSukumar Swaminathan #define MBX_NONEMBED_ERROR 0xF9 21282527734SSukumar Swaminathan #define MBX_OVERTEMP_ERROR 0xFA 21382527734SSukumar Swaminathan #define MBX_HARDWARE_ERROR 0xFB 21482527734SSukumar Swaminathan #define MBX_DRVR_ERROR 0xFC 21582527734SSukumar Swaminathan #define MBX_BUSY 0xFD 21682527734SSukumar Swaminathan #define MBX_TIMEOUT 0xFE 21782527734SSukumar Swaminathan #define MBX_NOT_FINISHED 0xFF 21882527734SSukumar Swaminathan 21982527734SSukumar Swaminathan /* 22082527734SSukumar Swaminathan * flags for EMLXS_SLI_ISSUE_MBOX_CMD() 22182527734SSukumar Swaminathan */ 22282527734SSukumar Swaminathan #define MBX_POLL 0x01 /* poll mailbox till command done, */ 22382527734SSukumar Swaminathan /* then return */ 22482527734SSukumar Swaminathan #define MBX_SLEEP 0x02 /* sleep till mailbox intr cmpl */ 22582527734SSukumar Swaminathan /* wakes thread up */ 22682527734SSukumar Swaminathan #define MBX_WAIT 0x03 /* wait for comand done, then return */ 22782527734SSukumar Swaminathan #define MBX_NOWAIT 0x04 /* issue command then return immediately */ 22882527734SSukumar Swaminathan #define MBX_BOOTSTRAP 0x80 /* issue a command on the bootstrap mbox */ 22982527734SSukumar Swaminathan 23082527734SSukumar Swaminathan 23182527734SSukumar Swaminathan 23282527734SSukumar Swaminathan /* 23382527734SSukumar Swaminathan * Begin Structure Definitions for Mailbox Commands 23482527734SSukumar Swaminathan */ 23582527734SSukumar Swaminathan 23682527734SSukumar Swaminathan typedef struct revcompat 23782527734SSukumar Swaminathan { 23882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 23982527734SSukumar Swaminathan uint32_t ldflag:1; /* Set in SRAM descriptor */ 24082527734SSukumar Swaminathan uint32_t ldcount:7; /* For use by program load */ 24182527734SSukumar Swaminathan uint32_t kernel:4; /* Kernel ID */ 24282527734SSukumar Swaminathan uint32_t kver:4; /* Kernel compatibility version */ 24382527734SSukumar Swaminathan uint32_t SMver:4; /* Sequence Manager version */ 24482527734SSukumar Swaminathan /* 0 if none */ 24582527734SSukumar Swaminathan uint32_t ENDECver:4; /* ENDEC+ version, 0 if none */ 24682527734SSukumar Swaminathan uint32_t BIUtype:4; /* PCI = 0 */ 24782527734SSukumar Swaminathan uint32_t BIUver:4; /* BIU version, 0 if none */ 24882527734SSukumar Swaminathan #endif 24982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 25082527734SSukumar Swaminathan uint32_t BIUver:4; /* BIU version, 0 if none */ 25182527734SSukumar Swaminathan uint32_t BIUtype:4; /* PCI = 0 */ 25282527734SSukumar Swaminathan uint32_t ENDECver:4; /* ENDEC+ version, 0 if none */ 25382527734SSukumar Swaminathan uint32_t SMver:4; /* Sequence Manager version */ 25482527734SSukumar Swaminathan /* 0 if none */ 25582527734SSukumar Swaminathan uint32_t kver:4; /* Kernel compatibility version */ 25682527734SSukumar Swaminathan uint32_t kernel:4; /* Kernel ID */ 25782527734SSukumar Swaminathan uint32_t ldcount:7; /* For use by program load */ 25882527734SSukumar Swaminathan uint32_t ldflag:1; /* Set in SRAM descriptor */ 25982527734SSukumar Swaminathan #endif 26082527734SSukumar Swaminathan } REVCOMPAT; 26182527734SSukumar Swaminathan 26282527734SSukumar Swaminathan typedef struct id_word 26382527734SSukumar Swaminathan { 26482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 26582527734SSukumar Swaminathan uint8_t Type; 26682527734SSukumar Swaminathan uint8_t Id; 26782527734SSukumar Swaminathan uint8_t Ver; 26882527734SSukumar Swaminathan uint8_t Rev; 26982527734SSukumar Swaminathan #endif 27082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 27182527734SSukumar Swaminathan uint8_t Rev; 27282527734SSukumar Swaminathan uint8_t Ver; 27382527734SSukumar Swaminathan uint8_t Id; 27482527734SSukumar Swaminathan uint8_t Type; 27582527734SSukumar Swaminathan #endif 27682527734SSukumar Swaminathan union 27782527734SSukumar Swaminathan { 27882527734SSukumar Swaminathan REVCOMPAT cp; 27982527734SSukumar Swaminathan uint32_t revcomp; 28082527734SSukumar Swaminathan } un; 28182527734SSukumar Swaminathan } PROG_ID; 28282527734SSukumar Swaminathan 28382527734SSukumar Swaminathan typedef struct 28482527734SSukumar Swaminathan { 28582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 28682527734SSukumar Swaminathan uint8_t tval; 28782527734SSukumar Swaminathan uint8_t tmask; 28882527734SSukumar Swaminathan uint8_t rval; 28982527734SSukumar Swaminathan uint8_t rmask; 29082527734SSukumar Swaminathan #endif 29182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 29282527734SSukumar Swaminathan uint8_t rmask; 29382527734SSukumar Swaminathan uint8_t rval; 29482527734SSukumar Swaminathan uint8_t tmask; 29582527734SSukumar Swaminathan uint8_t tval; 29682527734SSukumar Swaminathan #endif 29782527734SSukumar Swaminathan } RR_REG; 29882527734SSukumar Swaminathan 29982527734SSukumar Swaminathan 30082527734SSukumar Swaminathan /* Structure used for a HBQ entry */ 30182527734SSukumar Swaminathan typedef struct 30282527734SSukumar Swaminathan { 30382527734SSukumar Swaminathan ULP_BDE64 bde; 30482527734SSukumar Swaminathan union UN_TAG 30582527734SSukumar Swaminathan { 30682527734SSukumar Swaminathan uint32_t w; 30782527734SSukumar Swaminathan struct 30882527734SSukumar Swaminathan { 30982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 31082527734SSukumar Swaminathan uint32_t HBQ_tag:4; 31182527734SSukumar Swaminathan uint32_t HBQE_tag:28; 31282527734SSukumar Swaminathan #endif 31382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 31482527734SSukumar Swaminathan uint32_t HBQE_tag:28; 31582527734SSukumar Swaminathan uint32_t HBQ_tag:4; 31682527734SSukumar Swaminathan #endif 31782527734SSukumar Swaminathan } ext; 31882527734SSukumar Swaminathan } unt; 31982527734SSukumar Swaminathan } HBQE_t; 32082527734SSukumar Swaminathan 32182527734SSukumar Swaminathan typedef struct 32282527734SSukumar Swaminathan { 32382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 32482527734SSukumar Swaminathan uint8_t tmatch; 32582527734SSukumar Swaminathan uint8_t tmask; 32682527734SSukumar Swaminathan uint8_t rctlmatch; 32782527734SSukumar Swaminathan uint8_t rctlmask; 32882527734SSukumar Swaminathan #endif 32982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 33082527734SSukumar Swaminathan uint8_t rctlmask; 33182527734SSukumar Swaminathan uint8_t rctlmatch; 33282527734SSukumar Swaminathan uint8_t tmask; 33382527734SSukumar Swaminathan uint8_t tmatch; 33482527734SSukumar Swaminathan #endif 33582527734SSukumar Swaminathan } HBQ_MASK; 33682527734SSukumar Swaminathan 33782527734SSukumar Swaminathan #define EMLXS_MAX_HBQ_BUFFERS 4096 33882527734SSukumar Swaminathan 33982527734SSukumar Swaminathan typedef struct 34082527734SSukumar Swaminathan { 34182527734SSukumar Swaminathan uint32_t HBQ_num_mask; /* number of mask entries in */ 34282527734SSukumar Swaminathan /* port array */ 34382527734SSukumar Swaminathan uint32_t HBQ_recvNotify; /* Rcv buffer notification */ 34482527734SSukumar Swaminathan uint32_t HBQ_numEntries; /* # of entries in HBQ */ 34582527734SSukumar Swaminathan uint32_t HBQ_headerLen; /* 0 if not profile 4 or 5 */ 34682527734SSukumar Swaminathan uint32_t HBQ_logEntry; /* Set to 1 if this HBQ used */ 34782527734SSukumar Swaminathan /* for LogEntry */ 34882527734SSukumar Swaminathan uint32_t HBQ_profile; /* Selection profile 0=all, */ 34982527734SSukumar Swaminathan /* 7=logentry */ 35082527734SSukumar Swaminathan uint32_t HBQ_ringMask; /* Binds HBQ to a ring e.g. */ 35182527734SSukumar Swaminathan /* Ring0=b0001, ring2=b0100 */ 35282527734SSukumar Swaminathan uint32_t HBQ_id; /* index of this hbq in ring */ 35382527734SSukumar Swaminathan /* of HBQs[] */ 35482527734SSukumar Swaminathan uint32_t HBQ_PutIdx_next; /* Index to next HBQ slot to */ 35582527734SSukumar Swaminathan /* use */ 35682527734SSukumar Swaminathan uint32_t HBQ_PutIdx; /* HBQ slot to use */ 35782527734SSukumar Swaminathan uint32_t HBQ_GetIdx; /* Local copy of Get index */ 35882527734SSukumar Swaminathan /* from Port */ 35982527734SSukumar Swaminathan uint16_t HBQ_PostBufCnt; /* Current number of entries */ 36082527734SSukumar Swaminathan /* in list */ 36182527734SSukumar Swaminathan MATCHMAP *HBQ_PostBufs[EMLXS_MAX_HBQ_BUFFERS]; 36282527734SSukumar Swaminathan MATCHMAP HBQ_host_buf; /* HBQ host buffer for HBQEs */ 36382527734SSukumar Swaminathan HBQ_MASK HBQ_Masks[6]; 36482527734SSukumar Swaminathan 36582527734SSukumar Swaminathan union 36682527734SSukumar Swaminathan { 36782527734SSukumar Swaminathan uint32_t allprofiles[12]; 36882527734SSukumar Swaminathan 36982527734SSukumar Swaminathan struct 37082527734SSukumar Swaminathan { 37182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 37282527734SSukumar Swaminathan uint32_t seqlenoff:16; 37382527734SSukumar Swaminathan uint32_t maxlen:16; 37482527734SSukumar Swaminathan #endif 37582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 37682527734SSukumar Swaminathan uint32_t maxlen:16; 37782527734SSukumar Swaminathan uint32_t seqlenoff:16; 37882527734SSukumar Swaminathan #endif 37982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 38082527734SSukumar Swaminathan uint32_t rsvd1:28; 38182527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 38282527734SSukumar Swaminathan #endif 38382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 38482527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 38582527734SSukumar Swaminathan uint32_t rsvd1:28; 38682527734SSukumar Swaminathan #endif 38782527734SSukumar Swaminathan uint32_t rsvd[10]; 38882527734SSukumar Swaminathan } profile2; 38982527734SSukumar Swaminathan 39082527734SSukumar Swaminathan struct 39182527734SSukumar Swaminathan { 39282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 39382527734SSukumar Swaminathan uint32_t seqlenoff:16; 39482527734SSukumar Swaminathan uint32_t maxlen:16; 39582527734SSukumar Swaminathan #endif 39682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 39782527734SSukumar Swaminathan uint32_t maxlen:16; 39882527734SSukumar Swaminathan uint32_t seqlenoff:16; 39982527734SSukumar Swaminathan #endif 40082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 40182527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 40282527734SSukumar Swaminathan uint32_t rsvd1:12; 40382527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 40482527734SSukumar Swaminathan #endif 40582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 40682527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 40782527734SSukumar Swaminathan uint32_t rsvd1:12; 40882527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 40982527734SSukumar Swaminathan #endif 41082527734SSukumar Swaminathan uint32_t cmdmatch[8]; 41182527734SSukumar Swaminathan 41282527734SSukumar Swaminathan uint32_t rsvd[2]; 41382527734SSukumar Swaminathan } profile3; 41482527734SSukumar Swaminathan 41582527734SSukumar Swaminathan struct 41682527734SSukumar Swaminathan { 41782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 41882527734SSukumar Swaminathan uint32_t seqlenoff:16; 41982527734SSukumar Swaminathan uint32_t maxlen:16; 42082527734SSukumar Swaminathan #endif 42182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 42282527734SSukumar Swaminathan uint32_t maxlen:16; 42382527734SSukumar Swaminathan uint32_t seqlenoff:16; 42482527734SSukumar Swaminathan #endif 42582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 42682527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 42782527734SSukumar Swaminathan uint32_t rsvd1:12; 42882527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 42982527734SSukumar Swaminathan #endif 43082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 43182527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 43282527734SSukumar Swaminathan uint32_t rsvd1:12; 43382527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 43482527734SSukumar Swaminathan #endif 43582527734SSukumar Swaminathan uint32_t cmdmatch[8]; 43682527734SSukumar Swaminathan 43782527734SSukumar Swaminathan uint32_t rsvd[2]; 43882527734SSukumar Swaminathan } profile5; 43982527734SSukumar Swaminathan } profiles; 44082527734SSukumar Swaminathan } HBQ_INIT_t; 44182527734SSukumar Swaminathan 44282527734SSukumar Swaminathan 44382527734SSukumar Swaminathan 44482527734SSukumar Swaminathan /* Structure for MB Command LOAD_SM and DOWN_LOAD */ 44582527734SSukumar Swaminathan 44682527734SSukumar Swaminathan 44782527734SSukumar Swaminathan typedef struct 44882527734SSukumar Swaminathan { 44982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 4506a573d82SSukumar Swaminathan uint32_t rsvd2:24; 4516a573d82SSukumar Swaminathan uint32_t keep:1; 45282527734SSukumar Swaminathan uint32_t acknowledgment:1; 45382527734SSukumar Swaminathan uint32_t version:1; 45482527734SSukumar Swaminathan uint32_t erase_or_prog:1; 45582527734SSukumar Swaminathan uint32_t update_flash:1; 45682527734SSukumar Swaminathan uint32_t update_ram:1; 45782527734SSukumar Swaminathan uint32_t method:1; 45882527734SSukumar Swaminathan uint32_t load_cmplt:1; 45982527734SSukumar Swaminathan #endif 46082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 46182527734SSukumar Swaminathan uint32_t load_cmplt:1; 46282527734SSukumar Swaminathan uint32_t method:1; 46382527734SSukumar Swaminathan uint32_t update_ram:1; 46482527734SSukumar Swaminathan uint32_t update_flash:1; 46582527734SSukumar Swaminathan uint32_t erase_or_prog:1; 46682527734SSukumar Swaminathan uint32_t version:1; 46782527734SSukumar Swaminathan uint32_t acknowledgment:1; 4686a573d82SSukumar Swaminathan uint32_t keep:1; 4696a573d82SSukumar Swaminathan uint32_t rsvd2:24; 47082527734SSukumar Swaminathan #endif 47182527734SSukumar Swaminathan 47282527734SSukumar Swaminathan #define DL_FROM_BDE 0 /* method */ 47382527734SSukumar Swaminathan #define DL_FROM_SLIM 1 47482527734SSukumar Swaminathan 47582527734SSukumar Swaminathan #define PROGRAM_FLASH 0 /* erase_or_prog */ 47682527734SSukumar Swaminathan #define ERASE_FLASH 1 47782527734SSukumar Swaminathan 47882527734SSukumar Swaminathan uint32_t dl_to_adr; 47982527734SSukumar Swaminathan uint32_t dl_len; 48082527734SSukumar Swaminathan union 48182527734SSukumar Swaminathan { 48282527734SSukumar Swaminathan uint32_t dl_from_slim_offset; 48382527734SSukumar Swaminathan ULP_BDE dl_from_bde; 48482527734SSukumar Swaminathan ULP_BDE64 dl_from_bde64; 48582527734SSukumar Swaminathan PROG_ID prog_id; 48682527734SSukumar Swaminathan } un; 48782527734SSukumar Swaminathan } LOAD_SM_VAR; 48882527734SSukumar Swaminathan 48982527734SSukumar Swaminathan 49082527734SSukumar Swaminathan /* Structure for MB Command READ_NVPARM (02) */ 49182527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 49282527734SSukumar Swaminathan 49382527734SSukumar Swaminathan typedef struct 49482527734SSukumar Swaminathan { 49582527734SSukumar Swaminathan uint32_t rsvd1[3]; /* Read as all one's */ 49682527734SSukumar Swaminathan uint32_t rsvd2; /* Read as all zero's */ 49782527734SSukumar Swaminathan uint32_t portname[2]; /* N_PORT name */ 49882527734SSukumar Swaminathan uint32_t nodename[2]; /* NODE name */ 49982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 50082527734SSukumar Swaminathan uint32_t pref_DID:24; 50182527734SSukumar Swaminathan uint32_t hardAL_PA:8; 50282527734SSukumar Swaminathan #endif 50382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 50482527734SSukumar Swaminathan uint32_t hardAL_PA:8; 50582527734SSukumar Swaminathan uint32_t pref_DID:24; 50682527734SSukumar Swaminathan #endif 50782527734SSukumar Swaminathan uint32_t rsvd3[21]; /* Read as all one's */ 50882527734SSukumar Swaminathan } READ_NV_VAR; 50982527734SSukumar Swaminathan 51082527734SSukumar Swaminathan 51182527734SSukumar Swaminathan /* Structure for MB Command WRITE_NVPARMS (03) */ 51282527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 51382527734SSukumar Swaminathan 51482527734SSukumar Swaminathan typedef struct 51582527734SSukumar Swaminathan { 51682527734SSukumar Swaminathan uint32_t rsvd1[3]; /* Must be all one's */ 51782527734SSukumar Swaminathan uint32_t rsvd2; /* Must be all zero's */ 51882527734SSukumar Swaminathan uint32_t portname[2]; /* N_PORT name */ 51982527734SSukumar Swaminathan uint32_t nodename[2]; /* NODE name */ 52082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 52182527734SSukumar Swaminathan uint32_t pref_DID:24; 52282527734SSukumar Swaminathan uint32_t hardAL_PA:8; 52382527734SSukumar Swaminathan #endif 52482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 52582527734SSukumar Swaminathan uint32_t hardAL_PA:8; 52682527734SSukumar Swaminathan uint32_t pref_DID:24; 52782527734SSukumar Swaminathan #endif 52882527734SSukumar Swaminathan uint32_t rsvd3[21]; /* Must be all one's */ 52982527734SSukumar Swaminathan } WRITE_NV_VAR; 53082527734SSukumar Swaminathan 53182527734SSukumar Swaminathan 53282527734SSukumar Swaminathan /* Structure for MB Command RUN_BIU_DIAG64 (0x84) */ 53382527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 53482527734SSukumar Swaminathan 53582527734SSukumar Swaminathan typedef struct 53682527734SSukumar Swaminathan { 53782527734SSukumar Swaminathan uint32_t rsvd1; 53882527734SSukumar Swaminathan union 53982527734SSukumar Swaminathan { 54082527734SSukumar Swaminathan struct 54182527734SSukumar Swaminathan { 54282527734SSukumar Swaminathan ULP_BDE64 xmit_bde64; 54382527734SSukumar Swaminathan ULP_BDE64 rcv_bde64; 54482527734SSukumar Swaminathan } s2; 54582527734SSukumar Swaminathan } un; 54682527734SSukumar Swaminathan } BIU_DIAG_VAR; 54782527734SSukumar Swaminathan 54882527734SSukumar Swaminathan 54982527734SSukumar Swaminathan /* Structure for MB Command INIT_LINK (05) */ 55082527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 55182527734SSukumar Swaminathan 55282527734SSukumar Swaminathan typedef struct 55382527734SSukumar Swaminathan { 55482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 55582527734SSukumar Swaminathan uint32_t rsvd1:24; 55682527734SSukumar Swaminathan uint32_t lipsr_AL_PA:8; /* AL_PA to issue Lip Selective */ 55782527734SSukumar Swaminathan /* Reset to */ 55882527734SSukumar Swaminathan #endif 55982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 56082527734SSukumar Swaminathan uint32_t lipsr_AL_PA:8; /* AL_PA to issue Lip Selective */ 56182527734SSukumar Swaminathan /* Reset to */ 56282527734SSukumar Swaminathan uint32_t rsvd1:24; 56382527734SSukumar Swaminathan #endif 56482527734SSukumar Swaminathan 56582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 56682527734SSukumar Swaminathan uint8_t fabric_AL_PA; /* If using a Fabric Assigned AL_PA */ 56782527734SSukumar Swaminathan uint8_t rsvd2; 56882527734SSukumar Swaminathan uint16_t link_flags; 56982527734SSukumar Swaminathan #endif 57082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 57182527734SSukumar Swaminathan uint16_t link_flags; 57282527734SSukumar Swaminathan uint8_t rsvd2; 57382527734SSukumar Swaminathan uint8_t fabric_AL_PA; /* If using a Fabric Assigned AL_PA */ 57482527734SSukumar Swaminathan #endif 57582527734SSukumar Swaminathan #define FLAGS_LOCAL_LB 0x01 /* link_flags (=1) */ 57682527734SSukumar Swaminathan /* ENDEC loopback */ 57782527734SSukumar Swaminathan #define FLAGS_TOPOLOGY_MODE_LOOP_PT 0x00 /* Attempt loop then pt-pt */ 57882527734SSukumar Swaminathan #define FLAGS_TOPOLOGY_MODE_PT_PT 0x02 /* Attempt pt-pt only */ 57982527734SSukumar Swaminathan #define FLAGS_TOPOLOGY_MODE_LOOP 0x04 /* Attempt loop only */ 58082527734SSukumar Swaminathan #define FLAGS_TOPOLOGY_MODE_PT_LOOP 0x06 /* Attempt pt-pt then loop */ 58182527734SSukumar Swaminathan #define FLAGS_LIRP_LILP 0x80 /* LIRP / LILP is disabled */ 58282527734SSukumar Swaminathan 58382527734SSukumar Swaminathan #define FLAGS_TOPOLOGY_FAILOVER 0x0400 /* Bit 10 */ 58482527734SSukumar Swaminathan #define FLAGS_LINK_SPEED 0x0800 /* Bit 11 */ 58582527734SSukumar Swaminathan #define FLAGS_PREABORT_RETURN 0x4000 /* Bit 14 */ 58682527734SSukumar Swaminathan 58782527734SSukumar Swaminathan uint32_t link_speed; /* NEW_FEATURE */ 58882527734SSukumar Swaminathan #define LINK_SPEED_AUTO 0 /* Auto selection */ 58982527734SSukumar Swaminathan #define LINK_SPEED_1G 1 /* 1 Gigabaud */ 59082527734SSukumar Swaminathan #define LINK_SPEED_2G 2 /* 2 Gigabaud */ 59182527734SSukumar Swaminathan } INIT_LINK_VAR; 59282527734SSukumar Swaminathan 59382527734SSukumar Swaminathan 59482527734SSukumar Swaminathan /* Structure for MB Command DOWN_LINK (06) */ 59582527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 59682527734SSukumar Swaminathan 59782527734SSukumar Swaminathan typedef struct 59882527734SSukumar Swaminathan { 59982527734SSukumar Swaminathan uint32_t rsvd1; 60082527734SSukumar Swaminathan } DOWN_LINK_VAR; 60182527734SSukumar Swaminathan 60282527734SSukumar Swaminathan 60382527734SSukumar Swaminathan /* Structure for MB Command CONFIG_LINK (07) */ 60482527734SSukumar Swaminathan 60582527734SSukumar Swaminathan typedef struct 60682527734SSukumar Swaminathan { 60782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 60882527734SSukumar Swaminathan uint32_t cr:1; 60982527734SSukumar Swaminathan uint32_t ci:1; 61082527734SSukumar Swaminathan uint32_t cr_delay:6; 61182527734SSukumar Swaminathan uint32_t cr_count:8; 61282527734SSukumar Swaminathan uint32_t rsvd1:8; 61382527734SSukumar Swaminathan uint32_t MaxBBC:8; 61482527734SSukumar Swaminathan #endif 61582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 61682527734SSukumar Swaminathan uint32_t MaxBBC:8; 61782527734SSukumar Swaminathan uint32_t rsvd1:8; 61882527734SSukumar Swaminathan uint32_t cr_count:8; 61982527734SSukumar Swaminathan uint32_t cr_delay:6; 62082527734SSukumar Swaminathan uint32_t ci:1; 62182527734SSukumar Swaminathan uint32_t cr:1; 62282527734SSukumar Swaminathan #endif 62382527734SSukumar Swaminathan uint32_t myId; 62482527734SSukumar Swaminathan uint32_t rsvd2; 62582527734SSukumar Swaminathan uint32_t edtov; 62682527734SSukumar Swaminathan uint32_t arbtov; 62782527734SSukumar Swaminathan uint32_t ratov; 62882527734SSukumar Swaminathan uint32_t rttov; 62982527734SSukumar Swaminathan uint32_t altov; 63082527734SSukumar Swaminathan uint32_t crtov; 63182527734SSukumar Swaminathan uint32_t citov; 63282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 63382527734SSukumar Swaminathan uint32_t rrq_enable:1; 63482527734SSukumar Swaminathan uint32_t rrq_immed:1; 63582527734SSukumar Swaminathan uint32_t rsvd4:29; 63682527734SSukumar Swaminathan uint32_t ack0_enable:1; 63782527734SSukumar Swaminathan #endif 63882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 63982527734SSukumar Swaminathan uint32_t ack0_enable:1; 64082527734SSukumar Swaminathan uint32_t rsvd4:29; 64182527734SSukumar Swaminathan uint32_t rrq_immed:1; 64282527734SSukumar Swaminathan uint32_t rrq_enable:1; 64382527734SSukumar Swaminathan #endif 64482527734SSukumar Swaminathan } CONFIG_LINK; 64582527734SSukumar Swaminathan 64682527734SSukumar Swaminathan 64782527734SSukumar Swaminathan /* Structure for MB Command PART_SLIM (08) */ 64882527734SSukumar Swaminathan 64982527734SSukumar Swaminathan typedef struct 65082527734SSukumar Swaminathan { 65182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 65282527734SSukumar Swaminathan uint32_t unused1:24; 65382527734SSukumar Swaminathan uint32_t numRing:8; 65482527734SSukumar Swaminathan #endif 65582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 65682527734SSukumar Swaminathan uint32_t numRing:8; 65782527734SSukumar Swaminathan uint32_t unused1:24; 65882527734SSukumar Swaminathan #endif 65982527734SSukumar Swaminathan emlxs_ring_def_t ringdef[4]; 66082527734SSukumar Swaminathan uint32_t hbainit; 66182527734SSukumar Swaminathan } PART_SLIM_VAR; 66282527734SSukumar Swaminathan 66382527734SSukumar Swaminathan 66482527734SSukumar Swaminathan /* Structure for MB Command CONFIG_RING (09) */ 66582527734SSukumar Swaminathan 66682527734SSukumar Swaminathan typedef struct 66782527734SSukumar Swaminathan { 66882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 66982527734SSukumar Swaminathan uint32_t unused2:6; 67082527734SSukumar Swaminathan uint32_t recvSeq:1; 67182527734SSukumar Swaminathan uint32_t recvNotify:1; 67282527734SSukumar Swaminathan uint32_t numMask:8; 67382527734SSukumar Swaminathan uint32_t profile:8; 67482527734SSukumar Swaminathan uint32_t unused1:4; 67582527734SSukumar Swaminathan uint32_t ring:4; 67682527734SSukumar Swaminathan #endif 67782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 67882527734SSukumar Swaminathan uint32_t ring:4; 67982527734SSukumar Swaminathan uint32_t unused1:4; 68082527734SSukumar Swaminathan uint32_t profile:8; 68182527734SSukumar Swaminathan uint32_t numMask:8; 68282527734SSukumar Swaminathan uint32_t recvNotify:1; 68382527734SSukumar Swaminathan uint32_t recvSeq:1; 68482527734SSukumar Swaminathan uint32_t unused2:6; 68582527734SSukumar Swaminathan #endif 68682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 68782527734SSukumar Swaminathan uint16_t maxRespXchg; 68882527734SSukumar Swaminathan uint16_t maxOrigXchg; 68982527734SSukumar Swaminathan #endif 69082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 69182527734SSukumar Swaminathan uint16_t maxOrigXchg; 69282527734SSukumar Swaminathan uint16_t maxRespXchg; 69382527734SSukumar Swaminathan #endif 69482527734SSukumar Swaminathan RR_REG rrRegs[6]; 69582527734SSukumar Swaminathan } CONFIG_RING_VAR; 69682527734SSukumar Swaminathan 69782527734SSukumar Swaminathan 69882527734SSukumar Swaminathan /* Structure for MB Command RESET_RING (10) */ 69982527734SSukumar Swaminathan 70082527734SSukumar Swaminathan typedef struct 70182527734SSukumar Swaminathan { 70282527734SSukumar Swaminathan uint32_t ring_no; 70382527734SSukumar Swaminathan } RESET_RING_VAR; 70482527734SSukumar Swaminathan 70582527734SSukumar Swaminathan 70682527734SSukumar Swaminathan /* Structure for MB Command READ_CONFIG (11) */ 70782527734SSukumar Swaminathan /* Good for SLI2/3 only */ 70882527734SSukumar Swaminathan 70982527734SSukumar Swaminathan typedef struct 71082527734SSukumar Swaminathan { 71182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 71282527734SSukumar Swaminathan uint32_t cr:1; 71382527734SSukumar Swaminathan uint32_t ci:1; 71482527734SSukumar Swaminathan uint32_t cr_delay:6; 71582527734SSukumar Swaminathan uint32_t cr_count:8; 71682527734SSukumar Swaminathan uint32_t InitBBC:8; 71782527734SSukumar Swaminathan uint32_t MaxBBC:8; 71882527734SSukumar Swaminathan #endif 71982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 72082527734SSukumar Swaminathan uint32_t MaxBBC:8; 72182527734SSukumar Swaminathan uint32_t InitBBC:8; 72282527734SSukumar Swaminathan uint32_t cr_count:8; 72382527734SSukumar Swaminathan uint32_t cr_delay:6; 72482527734SSukumar Swaminathan uint32_t ci:1; 72582527734SSukumar Swaminathan uint32_t cr:1; 72682527734SSukumar Swaminathan #endif 72782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 72882527734SSukumar Swaminathan uint32_t topology:8; 72982527734SSukumar Swaminathan uint32_t myDid:24; 73082527734SSukumar Swaminathan #endif 73182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 73282527734SSukumar Swaminathan uint32_t myDid:24; 73382527734SSukumar Swaminathan uint32_t topology:8; 73482527734SSukumar Swaminathan #endif 73582527734SSukumar Swaminathan /* Defines for topology (defined previously) */ 73682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 73782527734SSukumar Swaminathan uint32_t AR:1; 73882527734SSukumar Swaminathan uint32_t IR:1; 73982527734SSukumar Swaminathan uint32_t rsvd1:29; 74082527734SSukumar Swaminathan uint32_t ack0:1; 74182527734SSukumar Swaminathan #endif 74282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 74382527734SSukumar Swaminathan uint32_t ack0:1; 74482527734SSukumar Swaminathan uint32_t rsvd1:29; 74582527734SSukumar Swaminathan uint32_t IR:1; 74682527734SSukumar Swaminathan uint32_t AR:1; 74782527734SSukumar Swaminathan #endif 74882527734SSukumar Swaminathan uint32_t edtov; 74982527734SSukumar Swaminathan uint32_t arbtov; 75082527734SSukumar Swaminathan uint32_t ratov; 75182527734SSukumar Swaminathan uint32_t rttov; 75282527734SSukumar Swaminathan uint32_t altov; 75382527734SSukumar Swaminathan uint32_t lmt; 75482527734SSukumar Swaminathan 75582527734SSukumar Swaminathan #define LMT_1GB_CAPABLE 0x0004 75682527734SSukumar Swaminathan #define LMT_2GB_CAPABLE 0x0008 75782527734SSukumar Swaminathan #define LMT_4GB_CAPABLE 0x0040 75882527734SSukumar Swaminathan #define LMT_8GB_CAPABLE 0x0080 75982527734SSukumar Swaminathan #define LMT_10GB_CAPABLE 0x0100 760*8f23e9faSHans Rosenfeld #define LMT_16GB_CAPABLE 0x0200 76182527734SSukumar Swaminathan /* E2E supported on adapters >= 8GB */ 76282527734SSukumar Swaminathan #define LMT_E2E_CAPABLE (LMT_8GB_CAPABLE|LMT_10GB_CAPABLE) 76382527734SSukumar Swaminathan 76482527734SSukumar Swaminathan uint32_t rsvd2; 76582527734SSukumar Swaminathan uint32_t rsvd3; 76682527734SSukumar Swaminathan uint32_t max_xri; 76782527734SSukumar Swaminathan uint32_t max_iocb; 76882527734SSukumar Swaminathan uint32_t max_rpi; 76982527734SSukumar Swaminathan uint32_t avail_xri; 77082527734SSukumar Swaminathan uint32_t avail_iocb; 77182527734SSukumar Swaminathan uint32_t avail_rpi; 77282527734SSukumar Swaminathan uint32_t max_vpi; 77382527734SSukumar Swaminathan uint32_t max_alpa; 77482527734SSukumar Swaminathan uint32_t rsvd4; 77582527734SSukumar Swaminathan uint32_t avail_vpi; 77682527734SSukumar Swaminathan 77782527734SSukumar Swaminathan } READ_CONFIG_VAR; 77882527734SSukumar Swaminathan 77982527734SSukumar Swaminathan 78082527734SSukumar Swaminathan /* Structure for MB Command READ_CONFIG(0x11) */ 78182527734SSukumar Swaminathan /* Good for SLI4 only */ 78282527734SSukumar Swaminathan 78382527734SSukumar Swaminathan typedef struct 78482527734SSukumar Swaminathan { 78582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 786*8f23e9faSHans Rosenfeld uint32_t extents:1; /* Word 1 */ 787*8f23e9faSHans Rosenfeld uint32_t rsvd1:31; 788*8f23e9faSHans Rosenfeld 789*8f23e9faSHans Rosenfeld uint32_t topology:8; /* Word 2 */ 790*8f23e9faSHans Rosenfeld uint32_t rsvd2:15; 791*8f23e9faSHans Rosenfeld uint32_t ldv:1; 792*8f23e9faSHans Rosenfeld uint32_t link_type:2; 793*8f23e9faSHans Rosenfeld uint32_t link_number:6; 79482527734SSukumar Swaminathan #endif 79582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 796*8f23e9faSHans Rosenfeld uint32_t rsvd1:31; /* Word 1 */ 797*8f23e9faSHans Rosenfeld uint32_t extents:1; 798*8f23e9faSHans Rosenfeld 799*8f23e9faSHans Rosenfeld uint32_t link_number:6; /* Word 2 */ 800*8f23e9faSHans Rosenfeld uint32_t link_type:2; 801*8f23e9faSHans Rosenfeld uint32_t ldv:1; 802*8f23e9faSHans Rosenfeld uint32_t rsvd2:15; 80382527734SSukumar Swaminathan uint32_t topology:8; 80482527734SSukumar Swaminathan #endif 80582527734SSukumar Swaminathan uint32_t rsvd3; /* Word 3 */ 80682527734SSukumar Swaminathan uint32_t edtov; /* Word 4 */ 80782527734SSukumar Swaminathan uint32_t rsvd4; /* Word 5 */ 80882527734SSukumar Swaminathan uint32_t ratov; /* Word 6 */ 80982527734SSukumar Swaminathan uint32_t rsvd5; /* Word 7 */ 81082527734SSukumar Swaminathan uint32_t rsvd6; /* Word 8 */ 81182527734SSukumar Swaminathan uint32_t lmt; /* Word 9 */ 81282527734SSukumar Swaminathan uint32_t rsvd8; /* Word 10 */ 81382527734SSukumar Swaminathan uint32_t rsvd9; /* Word 11 */ 81482527734SSukumar Swaminathan 81582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 81682527734SSukumar Swaminathan uint16_t XRICount; /* Word 12 */ 81782527734SSukumar Swaminathan uint16_t XRIBase; /* Word 12 */ 81882527734SSukumar Swaminathan 81982527734SSukumar Swaminathan uint16_t RPICount; /* Word 13 */ 82082527734SSukumar Swaminathan uint16_t RPIBase; /* Word 13 */ 82182527734SSukumar Swaminathan 82282527734SSukumar Swaminathan uint16_t VPICount; /* Word 14 */ 82382527734SSukumar Swaminathan uint16_t VPIBase; /* Word 14 */ 82482527734SSukumar Swaminathan 82582527734SSukumar Swaminathan uint16_t VFICount; /* Word 15 */ 82682527734SSukumar Swaminathan uint16_t VFIBase; /* Word 15 */ 82782527734SSukumar Swaminathan 82882527734SSukumar Swaminathan uint16_t FCFICount; /* Word 16 */ 82982527734SSukumar Swaminathan uint16_t rsvd10; /* Word 16 */ 83082527734SSukumar Swaminathan 83182527734SSukumar Swaminathan uint16_t EQCount; /* Word 17 */ 83282527734SSukumar Swaminathan uint16_t RQCount; /* Word 17 */ 83382527734SSukumar Swaminathan 83482527734SSukumar Swaminathan uint16_t CQCount; /* Word 18 */ 83582527734SSukumar Swaminathan uint16_t WQCount; /* Word 18 */ 83682527734SSukumar Swaminathan #endif 83782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 83882527734SSukumar Swaminathan uint16_t XRIBase; /* Word 12 */ 83982527734SSukumar Swaminathan uint16_t XRICount; /* Word 12 */ 84082527734SSukumar Swaminathan 84182527734SSukumar Swaminathan uint16_t RPIBase; /* Word 13 */ 84282527734SSukumar Swaminathan uint16_t RPICount; /* Word 13 */ 84382527734SSukumar Swaminathan 84482527734SSukumar Swaminathan uint16_t VPIBase; /* Word 14 */ 84582527734SSukumar Swaminathan uint16_t VPICount; /* Word 14 */ 84682527734SSukumar Swaminathan 84782527734SSukumar Swaminathan uint16_t VFIBase; /* Word 15 */ 84882527734SSukumar Swaminathan uint16_t VFICount; /* Word 15 */ 84982527734SSukumar Swaminathan 85082527734SSukumar Swaminathan uint16_t rsvd10; /* Word 16 */ 85182527734SSukumar Swaminathan uint16_t FCFICount; /* Word 16 */ 85282527734SSukumar Swaminathan 85382527734SSukumar Swaminathan uint16_t RQCount; /* Word 17 */ 854*8f23e9faSHans Rosenfeld uint16_t EQCount; /* Word 17 */ 85582527734SSukumar Swaminathan 85682527734SSukumar Swaminathan uint16_t WQCount; /* Word 18 */ 857*8f23e9faSHans Rosenfeld uint16_t CQCount; /* Word 18 */ 85882527734SSukumar Swaminathan #endif 85982527734SSukumar Swaminathan 86082527734SSukumar Swaminathan } READ_CONFIG4_VAR; 86182527734SSukumar Swaminathan 86282527734SSukumar Swaminathan /* Structure for MB Command READ_RCONFIG (12) */ 86382527734SSukumar Swaminathan 86482527734SSukumar Swaminathan typedef struct 86582527734SSukumar Swaminathan { 86682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 86782527734SSukumar Swaminathan uint32_t rsvd2:7; 86882527734SSukumar Swaminathan uint32_t recvNotify:1; 86982527734SSukumar Swaminathan uint32_t numMask:8; 87082527734SSukumar Swaminathan uint32_t profile:8; 87182527734SSukumar Swaminathan uint32_t rsvd1:4; 87282527734SSukumar Swaminathan uint32_t ring:4; 87382527734SSukumar Swaminathan #endif 87482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 87582527734SSukumar Swaminathan uint32_t ring:4; 87682527734SSukumar Swaminathan uint32_t rsvd1:4; 87782527734SSukumar Swaminathan uint32_t profile:8; 87882527734SSukumar Swaminathan uint32_t numMask:8; 87982527734SSukumar Swaminathan uint32_t recvNotify:1; 88082527734SSukumar Swaminathan uint32_t rsvd2:7; 88182527734SSukumar Swaminathan #endif 88282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 88382527734SSukumar Swaminathan uint16_t maxResp; 88482527734SSukumar Swaminathan uint16_t maxOrig; 88582527734SSukumar Swaminathan #endif 88682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 88782527734SSukumar Swaminathan uint16_t maxOrig; 88882527734SSukumar Swaminathan uint16_t maxResp; 88982527734SSukumar Swaminathan #endif 89082527734SSukumar Swaminathan RR_REG rrRegs[6]; 89182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 89282527734SSukumar Swaminathan uint16_t cmdRingOffset; 89382527734SSukumar Swaminathan uint16_t cmdEntryCnt; 89482527734SSukumar Swaminathan uint16_t rspRingOffset; 89582527734SSukumar Swaminathan uint16_t rspEntryCnt; 89682527734SSukumar Swaminathan uint16_t nextCmdOffset; 89782527734SSukumar Swaminathan uint16_t rsvd3; 89882527734SSukumar Swaminathan uint16_t nextRspOffset; 89982527734SSukumar Swaminathan uint16_t rsvd4; 90082527734SSukumar Swaminathan #endif 90182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 90282527734SSukumar Swaminathan uint16_t cmdEntryCnt; 90382527734SSukumar Swaminathan uint16_t cmdRingOffset; 90482527734SSukumar Swaminathan uint16_t rspEntryCnt; 90582527734SSukumar Swaminathan uint16_t rspRingOffset; 90682527734SSukumar Swaminathan uint16_t rsvd3; 90782527734SSukumar Swaminathan uint16_t nextCmdOffset; 90882527734SSukumar Swaminathan uint16_t rsvd4; 90982527734SSukumar Swaminathan uint16_t nextRspOffset; 91082527734SSukumar Swaminathan #endif 91182527734SSukumar Swaminathan } READ_RCONF_VAR; 91282527734SSukumar Swaminathan 91382527734SSukumar Swaminathan 91482527734SSukumar Swaminathan /* Structure for MB Command READ_SPARM (13) */ 91582527734SSukumar Swaminathan /* Structure for MB Command READ_SPARM64 (0x8D) */ 91682527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 91782527734SSukumar Swaminathan 91882527734SSukumar Swaminathan typedef struct 91982527734SSukumar Swaminathan { 92082527734SSukumar Swaminathan uint32_t rsvd1; 92182527734SSukumar Swaminathan uint32_t rsvd2; 92282527734SSukumar Swaminathan union 92382527734SSukumar Swaminathan { 92482527734SSukumar Swaminathan ULP_BDE sp; /* This BDE points to SERV_PARM */ 92582527734SSukumar Swaminathan /* structure */ 92682527734SSukumar Swaminathan ULP_BDE64 sp64; 92782527734SSukumar Swaminathan } un; 92882527734SSukumar Swaminathan uint32_t rsvd3; 92982527734SSukumar Swaminathan 93082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 93182527734SSukumar Swaminathan uint16_t portNameCnt; 93282527734SSukumar Swaminathan uint16_t portNameOffset; 93382527734SSukumar Swaminathan 93482527734SSukumar Swaminathan uint16_t fabricNameCnt; 93582527734SSukumar Swaminathan uint16_t fabricNameOffset; 93682527734SSukumar Swaminathan 93782527734SSukumar Swaminathan uint16_t lportNameCnt; 93882527734SSukumar Swaminathan uint16_t lportNameOffset; 93982527734SSukumar Swaminathan 94082527734SSukumar Swaminathan uint16_t lfabricNameCnt; 94182527734SSukumar Swaminathan uint16_t lfabricNameOffset; 94282527734SSukumar Swaminathan 94382527734SSukumar Swaminathan #endif 94482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 94582527734SSukumar Swaminathan uint16_t portNameOffset; 94682527734SSukumar Swaminathan uint16_t portNameCnt; 94782527734SSukumar Swaminathan 94882527734SSukumar Swaminathan uint16_t fabricNameOffset; 94982527734SSukumar Swaminathan uint16_t fabricNameCnt; 95082527734SSukumar Swaminathan 95182527734SSukumar Swaminathan uint16_t lportNameOffset; 95282527734SSukumar Swaminathan uint16_t lportNameCnt; 95382527734SSukumar Swaminathan 95482527734SSukumar Swaminathan uint16_t lfabricNameOffset; 95582527734SSukumar Swaminathan uint16_t lfabricNameCnt; 95682527734SSukumar Swaminathan 95782527734SSukumar Swaminathan #endif 95882527734SSukumar Swaminathan 95982527734SSukumar Swaminathan } READ_SPARM_VAR; 96082527734SSukumar Swaminathan 96182527734SSukumar Swaminathan 96282527734SSukumar Swaminathan /* Structure for MB Command READ_STATUS (14) */ 96382527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 96482527734SSukumar Swaminathan 96582527734SSukumar Swaminathan typedef struct 96682527734SSukumar Swaminathan { 96782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 96882527734SSukumar Swaminathan uint32_t rsvd1:31; 96982527734SSukumar Swaminathan uint32_t clrCounters:1; 97082527734SSukumar Swaminathan 97182527734SSukumar Swaminathan uint16_t activeXriCnt; 97282527734SSukumar Swaminathan uint16_t activeRpiCnt; 97382527734SSukumar Swaminathan #endif 97482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 97582527734SSukumar Swaminathan uint32_t clrCounters:1; 97682527734SSukumar Swaminathan uint32_t rsvd1:31; 97782527734SSukumar Swaminathan 97882527734SSukumar Swaminathan uint16_t activeRpiCnt; 97982527734SSukumar Swaminathan uint16_t activeXriCnt; 98082527734SSukumar Swaminathan #endif 98182527734SSukumar Swaminathan uint32_t xmitByteCnt; 98282527734SSukumar Swaminathan uint32_t rcvByteCnt; 98382527734SSukumar Swaminathan uint32_t xmitFrameCnt; 98482527734SSukumar Swaminathan uint32_t rcvFrameCnt; 98582527734SSukumar Swaminathan uint32_t xmitSeqCnt; 98682527734SSukumar Swaminathan uint32_t rcvSeqCnt; 98782527734SSukumar Swaminathan uint32_t totalOrigExchanges; 98882527734SSukumar Swaminathan uint32_t totalRespExchanges; 98982527734SSukumar Swaminathan uint32_t rcvPbsyCnt; 99082527734SSukumar Swaminathan uint32_t rcvFbsyCnt; 99182527734SSukumar Swaminathan } READ_STATUS_VAR; 99282527734SSukumar Swaminathan 99382527734SSukumar Swaminathan 99482527734SSukumar Swaminathan /* Structure for MB Command READ_RPI (15) */ 99582527734SSukumar Swaminathan /* Structure for MB Command READ_RPI64 (0x8F) */ 99682527734SSukumar Swaminathan 99782527734SSukumar Swaminathan typedef struct 99882527734SSukumar Swaminathan { 99982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 100082527734SSukumar Swaminathan uint16_t nextRpi; 100182527734SSukumar Swaminathan uint16_t reqRpi; 100282527734SSukumar Swaminathan uint32_t rsvd2:8; 100382527734SSukumar Swaminathan uint32_t DID:24; 100482527734SSukumar Swaminathan #endif 100582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 100682527734SSukumar Swaminathan uint16_t reqRpi; 100782527734SSukumar Swaminathan uint16_t nextRpi; 100882527734SSukumar Swaminathan uint32_t DID:24; 100982527734SSukumar Swaminathan uint32_t rsvd2:8; 101082527734SSukumar Swaminathan #endif 101182527734SSukumar Swaminathan union 101282527734SSukumar Swaminathan { 101382527734SSukumar Swaminathan ULP_BDE sp; 101482527734SSukumar Swaminathan ULP_BDE64 sp64; 101582527734SSukumar Swaminathan } un; 101682527734SSukumar Swaminathan } READ_RPI_VAR; 101782527734SSukumar Swaminathan 101882527734SSukumar Swaminathan 101982527734SSukumar Swaminathan /* Structure for MB Command READ_XRI (16) */ 102082527734SSukumar Swaminathan 102182527734SSukumar Swaminathan typedef struct 102282527734SSukumar Swaminathan { 102382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 102482527734SSukumar Swaminathan uint16_t nextXri; 102582527734SSukumar Swaminathan uint16_t reqXri; 102682527734SSukumar Swaminathan uint16_t rsvd1; 102782527734SSukumar Swaminathan uint16_t rpi; 102882527734SSukumar Swaminathan uint32_t rsvd2:8; 102982527734SSukumar Swaminathan uint32_t DID:24; 103082527734SSukumar Swaminathan uint32_t rsvd3:8; 103182527734SSukumar Swaminathan uint32_t SID:24; 103282527734SSukumar Swaminathan uint32_t rsvd4; 103382527734SSukumar Swaminathan uint8_t seqId; 103482527734SSukumar Swaminathan uint8_t rsvd5; 103582527734SSukumar Swaminathan uint16_t seqCount; 103682527734SSukumar Swaminathan uint16_t oxId; 103782527734SSukumar Swaminathan uint16_t rxId; 103882527734SSukumar Swaminathan uint32_t rsvd6:30; 103982527734SSukumar Swaminathan uint32_t si:1; 104082527734SSukumar Swaminathan uint32_t exchOrig:1; 104182527734SSukumar Swaminathan #endif 104282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 104382527734SSukumar Swaminathan uint16_t reqXri; 104482527734SSukumar Swaminathan uint16_t nextXri; 104582527734SSukumar Swaminathan uint16_t rpi; 104682527734SSukumar Swaminathan uint16_t rsvd1; 104782527734SSukumar Swaminathan uint32_t DID:24; 104882527734SSukumar Swaminathan uint32_t rsvd2:8; 104982527734SSukumar Swaminathan uint32_t SID:24; 105082527734SSukumar Swaminathan uint32_t rsvd3:8; 105182527734SSukumar Swaminathan uint32_t rsvd4; 105282527734SSukumar Swaminathan uint16_t seqCount; 105382527734SSukumar Swaminathan uint8_t rsvd5; 105482527734SSukumar Swaminathan uint8_t seqId; 105582527734SSukumar Swaminathan uint16_t rxId; 105682527734SSukumar Swaminathan uint16_t oxId; 105782527734SSukumar Swaminathan uint32_t exchOrig:1; 105882527734SSukumar Swaminathan uint32_t si:1; 105982527734SSukumar Swaminathan uint32_t rsvd6:30; 106082527734SSukumar Swaminathan #endif 106182527734SSukumar Swaminathan } READ_XRI_VAR; 106282527734SSukumar Swaminathan 106382527734SSukumar Swaminathan 106482527734SSukumar Swaminathan /* Structure for MB Command READ_REV (17) */ 106582527734SSukumar Swaminathan /* Good for SLI2/3 only */ 106682527734SSukumar Swaminathan 106782527734SSukumar Swaminathan typedef struct 106882527734SSukumar Swaminathan { 106982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 107082527734SSukumar Swaminathan uint32_t cv:1; 107182527734SSukumar Swaminathan uint32_t rr:1; 107282527734SSukumar Swaminathan uint32_t co:1; 107382527734SSukumar Swaminathan uint32_t rp:1; 107482527734SSukumar Swaminathan uint32_t cv3:1; 107582527734SSukumar Swaminathan uint32_t rf3:1; 107682527734SSukumar Swaminathan uint32_t rsvd1:10; 107782527734SSukumar Swaminathan uint32_t offset:14; 107882527734SSukumar Swaminathan uint32_t rv:2; 107982527734SSukumar Swaminathan #endif 108082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 108182527734SSukumar Swaminathan uint32_t rv:2; 108282527734SSukumar Swaminathan uint32_t offset:14; 108382527734SSukumar Swaminathan uint32_t rsvd1:10; 108482527734SSukumar Swaminathan uint32_t rf3:1; 108582527734SSukumar Swaminathan uint32_t cv3:1; 108682527734SSukumar Swaminathan uint32_t rp:1; 108782527734SSukumar Swaminathan uint32_t co:1; 108882527734SSukumar Swaminathan uint32_t rr:1; 108982527734SSukumar Swaminathan uint32_t cv:1; 109082527734SSukumar Swaminathan #endif 109182527734SSukumar Swaminathan uint32_t biuRev; 109282527734SSukumar Swaminathan uint32_t smRev; 109382527734SSukumar Swaminathan union 109482527734SSukumar Swaminathan { 109582527734SSukumar Swaminathan uint32_t smFwRev; 109682527734SSukumar Swaminathan struct 109782527734SSukumar Swaminathan { 109882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 109982527734SSukumar Swaminathan uint8_t ProgType; 110082527734SSukumar Swaminathan uint8_t ProgId; 110182527734SSukumar Swaminathan uint16_t ProgVer:4; 110282527734SSukumar Swaminathan uint16_t ProgRev:4; 110382527734SSukumar Swaminathan uint16_t ProgFixLvl:2; 110482527734SSukumar Swaminathan uint16_t ProgDistType:2; 110582527734SSukumar Swaminathan uint16_t DistCnt:4; 110682527734SSukumar Swaminathan #endif 110782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 110882527734SSukumar Swaminathan uint16_t DistCnt:4; 110982527734SSukumar Swaminathan uint16_t ProgDistType:2; 111082527734SSukumar Swaminathan uint16_t ProgFixLvl:2; 111182527734SSukumar Swaminathan uint16_t ProgRev:4; 111282527734SSukumar Swaminathan uint16_t ProgVer:4; 111382527734SSukumar Swaminathan uint8_t ProgId; 111482527734SSukumar Swaminathan uint8_t ProgType; 111582527734SSukumar Swaminathan #endif 111682527734SSukumar Swaminathan } b; 111782527734SSukumar Swaminathan } un; 111882527734SSukumar Swaminathan uint32_t endecRev; 111982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 112082527734SSukumar Swaminathan uint8_t feaLevelHigh; 112182527734SSukumar Swaminathan uint8_t feaLevelLow; 112282527734SSukumar Swaminathan uint8_t fcphHigh; 112382527734SSukumar Swaminathan uint8_t fcphLow; 112482527734SSukumar Swaminathan #endif 112582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 112682527734SSukumar Swaminathan uint8_t fcphLow; 112782527734SSukumar Swaminathan uint8_t fcphHigh; 112882527734SSukumar Swaminathan uint8_t feaLevelLow; 112982527734SSukumar Swaminathan uint8_t feaLevelHigh; 113082527734SSukumar Swaminathan #endif 113182527734SSukumar Swaminathan uint32_t postKernRev; 113282527734SSukumar Swaminathan uint32_t opFwRev; 113382527734SSukumar Swaminathan uint8_t opFwName[16]; 113482527734SSukumar Swaminathan 113582527734SSukumar Swaminathan uint32_t sliFwRev1; 113682527734SSukumar Swaminathan uint8_t sliFwName1[16]; 113782527734SSukumar Swaminathan uint32_t sliFwRev2; 113882527734SSukumar Swaminathan uint8_t sliFwName2[16]; 113982527734SSukumar Swaminathan } READ_REV_VAR; 114082527734SSukumar Swaminathan 114182527734SSukumar Swaminathan /* Structure for MB Command READ_REV (17) */ 114282527734SSukumar Swaminathan /* Good for SLI4 only */ 114382527734SSukumar Swaminathan 114482527734SSukumar Swaminathan typedef struct 114582527734SSukumar Swaminathan { 114682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 114782527734SSukumar Swaminathan uint32_t Rsvd3:2; 114882527734SSukumar Swaminathan uint32_t VPD:1; 114982527734SSukumar Swaminathan uint32_t rsvd2:6; 115082527734SSukumar Swaminathan uint32_t dcbxMode:2; 115182527734SSukumar Swaminathan uint32_t FCoE:1; 115282527734SSukumar Swaminathan uint32_t sliLevel:4; 115382527734SSukumar Swaminathan uint32_t rsvd1:16; 115482527734SSukumar Swaminathan #endif 115582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 115682527734SSukumar Swaminathan uint32_t rsvd1:16; 115782527734SSukumar Swaminathan uint32_t sliLevel:4; 115882527734SSukumar Swaminathan uint32_t FCoE:1; 115982527734SSukumar Swaminathan uint32_t dcbxMode:2; 116082527734SSukumar Swaminathan uint32_t rsvd2:6; 116182527734SSukumar Swaminathan uint32_t VPD:1; 116282527734SSukumar Swaminathan uint32_t Rsvd3:2; 116382527734SSukumar Swaminathan #endif 116482527734SSukumar Swaminathan 116582527734SSukumar Swaminathan uint32_t HwRev1; 116682527734SSukumar Swaminathan uint32_t HwRev2; 116782527734SSukumar Swaminathan uint32_t Rsvd4; 116882527734SSukumar Swaminathan uint32_t HwRev3; 116982527734SSukumar Swaminathan 117082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 117182527734SSukumar Swaminathan uint8_t feaLevelHigh; 117282527734SSukumar Swaminathan uint8_t feaLevelLow; 117382527734SSukumar Swaminathan uint8_t fcphHigh; 117482527734SSukumar Swaminathan uint8_t fcphLow; 117582527734SSukumar Swaminathan #endif 117682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 117782527734SSukumar Swaminathan uint8_t fcphLow; 117882527734SSukumar Swaminathan uint8_t fcphHigh; 117982527734SSukumar Swaminathan uint8_t feaLevelLow; 118082527734SSukumar Swaminathan uint8_t feaLevelHigh; 118182527734SSukumar Swaminathan #endif 118282527734SSukumar Swaminathan 118382527734SSukumar Swaminathan uint32_t Redboot; 118482527734SSukumar Swaminathan 118582527734SSukumar Swaminathan uint32_t ARMFwId; 118682527734SSukumar Swaminathan uint8_t ARMFwName[16]; 118782527734SSukumar Swaminathan 118882527734SSukumar Swaminathan uint32_t ULPFwId; 118982527734SSukumar Swaminathan uint8_t ULPFwName[16]; 119082527734SSukumar Swaminathan 119182527734SSukumar Swaminathan uint32_t Rsvd6[30]; 119282527734SSukumar Swaminathan 119382527734SSukumar Swaminathan ULP_BDE64 VPDBde; 119482527734SSukumar Swaminathan 119582527734SSukumar Swaminathan uint32_t ReturnedVPDLength; 119682527734SSukumar Swaminathan 119782527734SSukumar Swaminathan } READ_REV4_VAR; 119882527734SSukumar Swaminathan 119982527734SSukumar Swaminathan #define EMLXS_DCBX_MODE_CIN 0 /* Mapped to nonFIP mode */ 120082527734SSukumar Swaminathan #define EMLXS_DCBX_MODE_CEE 1 /* Mapped to FIP mode */ 120182527734SSukumar Swaminathan 120282527734SSukumar Swaminathan /* Structure for MB Command READ_LINK_STAT (18) */ 120382527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 120482527734SSukumar Swaminathan 120582527734SSukumar Swaminathan typedef struct 120682527734SSukumar Swaminathan { 120782527734SSukumar Swaminathan uint32_t rsvd1; 120882527734SSukumar Swaminathan uint32_t linkFailureCnt; 120982527734SSukumar Swaminathan uint32_t lossSyncCnt; 121082527734SSukumar Swaminathan 121182527734SSukumar Swaminathan uint32_t lossSignalCnt; 121282527734SSukumar Swaminathan uint32_t primSeqErrCnt; 121382527734SSukumar Swaminathan uint32_t invalidXmitWord; 121482527734SSukumar Swaminathan uint32_t crcCnt; 121582527734SSukumar Swaminathan uint32_t primSeqTimeout; 121682527734SSukumar Swaminathan uint32_t elasticOverrun; 121782527734SSukumar Swaminathan uint32_t arbTimeout; 121882527734SSukumar Swaminathan 121982527734SSukumar Swaminathan uint32_t rxBufCredit; 122082527734SSukumar Swaminathan uint32_t rxBufCreditCur; 122182527734SSukumar Swaminathan 122282527734SSukumar Swaminathan uint32_t txBufCredit; 122382527734SSukumar Swaminathan uint32_t txBufCreditCur; 122482527734SSukumar Swaminathan 122582527734SSukumar Swaminathan uint32_t EOFaCnt; 122682527734SSukumar Swaminathan uint32_t EOFdtiCnt; 122782527734SSukumar Swaminathan uint32_t EOFniCnt; 122882527734SSukumar Swaminathan uint32_t SOFfCnt; 122982527734SSukumar Swaminathan uint32_t DropAERCnt; 123082527734SSukumar Swaminathan uint32_t DropRcv; 123182527734SSukumar Swaminathan } READ_LNK_VAR; 123282527734SSukumar Swaminathan 123382527734SSukumar Swaminathan 123482527734SSukumar Swaminathan /* Structure for MB Command REG_LOGIN (19) */ 123582527734SSukumar Swaminathan /* Structure for MB Command REG_LOGIN64 (0x93) */ 123682527734SSukumar Swaminathan /* Structure for MB Command REG_RPI (0x93) */ 123782527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 123882527734SSukumar Swaminathan 123982527734SSukumar Swaminathan typedef struct 124082527734SSukumar Swaminathan { 124182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 124282527734SSukumar Swaminathan uint16_t rsvd1; 124382527734SSukumar Swaminathan uint16_t rpi; 124482527734SSukumar Swaminathan uint32_t CI:1; 1245*8f23e9faSHans Rosenfeld uint32_t rsvd2:1; 1246*8f23e9faSHans Rosenfeld uint32_t TERP:1; 1247*8f23e9faSHans Rosenfeld uint32_t rsvd3:4; 1248*8f23e9faSHans Rosenfeld uint32_t update:1; 124982527734SSukumar Swaminathan uint32_t did:24; 125082527734SSukumar Swaminathan #endif 125182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 125282527734SSukumar Swaminathan uint16_t rpi; 125382527734SSukumar Swaminathan uint16_t rsvd1; 125482527734SSukumar Swaminathan uint32_t did:24; 1255*8f23e9faSHans Rosenfeld uint32_t update:1; 1256*8f23e9faSHans Rosenfeld uint32_t rsvd3:4; 1257*8f23e9faSHans Rosenfeld uint32_t TERP:1; 1258*8f23e9faSHans Rosenfeld uint32_t rsvd2:1; 125982527734SSukumar Swaminathan uint32_t CI:1; 126082527734SSukumar Swaminathan #endif 126182527734SSukumar Swaminathan union 126282527734SSukumar Swaminathan { 126382527734SSukumar Swaminathan ULP_BDE sp; 126482527734SSukumar Swaminathan ULP_BDE64 sp64; 126582527734SSukumar Swaminathan } un; 126682527734SSukumar Swaminathan 126782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 126882527734SSukumar Swaminathan uint16_t rsvd6; 126982527734SSukumar Swaminathan uint16_t vpi; 127082527734SSukumar Swaminathan #endif 127182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 127282527734SSukumar Swaminathan uint16_t vpi; 127382527734SSukumar Swaminathan uint16_t rsvd6; 127482527734SSukumar Swaminathan #endif 127582527734SSukumar Swaminathan } REG_LOGIN_VAR; 127682527734SSukumar Swaminathan 127782527734SSukumar Swaminathan /* Word 30 contents for REG_LOGIN */ 127882527734SSukumar Swaminathan typedef union 127982527734SSukumar Swaminathan { 128082527734SSukumar Swaminathan struct 128182527734SSukumar Swaminathan { 128282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 128382527734SSukumar Swaminathan uint16_t rsvd1:12; 128482527734SSukumar Swaminathan uint16_t class:4; 128582527734SSukumar Swaminathan uint16_t xri; 128682527734SSukumar Swaminathan #endif 128782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 128882527734SSukumar Swaminathan uint16_t xri; 128982527734SSukumar Swaminathan uint16_t class:4; 129082527734SSukumar Swaminathan uint16_t rsvd1:12; 129182527734SSukumar Swaminathan #endif 129282527734SSukumar Swaminathan } f; 129382527734SSukumar Swaminathan uint32_t word; 129482527734SSukumar Swaminathan } REG_WD30; 129582527734SSukumar Swaminathan 129682527734SSukumar Swaminathan 129782527734SSukumar Swaminathan /* Structure for MB Command UNREG_LOGIN (0x14) - SLI2/3 */ 129882527734SSukumar Swaminathan /* Structure for MB Command UNREG_RPI (0x14) - SLI4 */ 129982527734SSukumar Swaminathan 130082527734SSukumar Swaminathan typedef struct 130182527734SSukumar Swaminathan { 130282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 130382527734SSukumar Swaminathan uint16_t ll:2; /* SLI4 only */ 130482527734SSukumar Swaminathan uint16_t rsvd1:14; 130582527734SSukumar Swaminathan uint16_t rpi; 130682527734SSukumar Swaminathan #endif 130782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 130882527734SSukumar Swaminathan uint16_t rpi; 130982527734SSukumar Swaminathan uint16_t rsvd1:14; 131082527734SSukumar Swaminathan uint16_t ll:2; /* SLI4 only */ 131182527734SSukumar Swaminathan #endif 131282527734SSukumar Swaminathan 131382527734SSukumar Swaminathan uint32_t rsvd2; 131482527734SSukumar Swaminathan uint32_t rsvd3; 131582527734SSukumar Swaminathan uint32_t rsvd4; 131682527734SSukumar Swaminathan uint32_t rsvd5; 131782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 131882527734SSukumar Swaminathan uint16_t rsvd6; 131982527734SSukumar Swaminathan uint16_t vpi; 132082527734SSukumar Swaminathan #endif 132182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 132282527734SSukumar Swaminathan uint16_t vpi; 132382527734SSukumar Swaminathan uint16_t rsvd6; 132482527734SSukumar Swaminathan #endif 132582527734SSukumar Swaminathan } UNREG_LOGIN_VAR; 132682527734SSukumar Swaminathan 132782527734SSukumar Swaminathan /* Structure for MB Command REG_FCFI (0xA0) */ 132882527734SSukumar Swaminathan /* Good for SLI4 only */ 132982527734SSukumar Swaminathan 133082527734SSukumar Swaminathan typedef struct 133182527734SSukumar Swaminathan { 133282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 133382527734SSukumar Swaminathan uint16_t FCFI; 133482527734SSukumar Swaminathan uint16_t InfoIndex; 133582527734SSukumar Swaminathan 133682527734SSukumar Swaminathan uint16_t RQId0; 133782527734SSukumar Swaminathan uint16_t RQId1; 133882527734SSukumar Swaminathan uint16_t RQId2; 133982527734SSukumar Swaminathan uint16_t RQId3; 134082527734SSukumar Swaminathan 134182527734SSukumar Swaminathan uint8_t Id0_type; 134282527734SSukumar Swaminathan uint8_t Id0_type_mask; 134382527734SSukumar Swaminathan uint8_t Id0_rctl; 134482527734SSukumar Swaminathan uint8_t Id0_rctl_mask; 134582527734SSukumar Swaminathan 134682527734SSukumar Swaminathan uint8_t Id1_type; 134782527734SSukumar Swaminathan uint8_t Id1_type_mask; 134882527734SSukumar Swaminathan uint8_t Id1_rctl; 134982527734SSukumar Swaminathan uint8_t Id1_rctl_mask; 135082527734SSukumar Swaminathan 135182527734SSukumar Swaminathan uint8_t Id2_type; 135282527734SSukumar Swaminathan uint8_t Id2_type_mask; 135382527734SSukumar Swaminathan uint8_t Id2_rctl; 135482527734SSukumar Swaminathan uint8_t Id2_rctl_mask; 135582527734SSukumar Swaminathan 135682527734SSukumar Swaminathan uint8_t Id3_type; 135782527734SSukumar Swaminathan uint8_t Id3_type_mask; 135882527734SSukumar Swaminathan uint8_t Id3_rctl; 135982527734SSukumar Swaminathan uint8_t Id3_rctl_mask; 136082527734SSukumar Swaminathan 136182527734SSukumar Swaminathan uint32_t Rsvd1: 17; 136282527734SSukumar Swaminathan uint32_t mam: 2; 136382527734SSukumar Swaminathan uint32_t vv: 1; 136482527734SSukumar Swaminathan uint32_t vlanTag: 12; 136582527734SSukumar Swaminathan #endif 136682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 136782527734SSukumar Swaminathan uint16_t InfoIndex; 136882527734SSukumar Swaminathan uint16_t FCFI; 136982527734SSukumar Swaminathan 137082527734SSukumar Swaminathan uint16_t RQId1; 137182527734SSukumar Swaminathan uint16_t RQId0; 137282527734SSukumar Swaminathan uint16_t RQId3; 137382527734SSukumar Swaminathan uint16_t RQId2; 137482527734SSukumar Swaminathan 137582527734SSukumar Swaminathan uint8_t Id0_rctl_mask; 137682527734SSukumar Swaminathan uint8_t Id0_rctl; 137782527734SSukumar Swaminathan uint8_t Id0_type_mask; 137882527734SSukumar Swaminathan uint8_t Id0_type; 137982527734SSukumar Swaminathan 138082527734SSukumar Swaminathan uint8_t Id1_rctl_mask; 138182527734SSukumar Swaminathan uint8_t Id1_rctl; 138282527734SSukumar Swaminathan uint8_t Id1_type_mask; 138382527734SSukumar Swaminathan uint8_t Id1_type; 138482527734SSukumar Swaminathan 138582527734SSukumar Swaminathan uint8_t Id2_rctl_mask; 138682527734SSukumar Swaminathan uint8_t Id2_rctl; 138782527734SSukumar Swaminathan uint8_t Id2_type_mask; 138882527734SSukumar Swaminathan uint8_t Id2_type; 138982527734SSukumar Swaminathan 139082527734SSukumar Swaminathan uint8_t Id3_rctl_mask; 139182527734SSukumar Swaminathan uint8_t Id3_rctl; 139282527734SSukumar Swaminathan uint8_t Id3_type_mask; 139382527734SSukumar Swaminathan uint8_t Id3_type; 139482527734SSukumar Swaminathan 139582527734SSukumar Swaminathan uint32_t vlanTag: 12; 139682527734SSukumar Swaminathan uint32_t vv: 1; 139782527734SSukumar Swaminathan uint32_t mam: 2; 139882527734SSukumar Swaminathan uint32_t Rsvd1: 17; 139982527734SSukumar Swaminathan #endif 140082527734SSukumar Swaminathan 140182527734SSukumar Swaminathan } REG_FCFI_VAR; 140282527734SSukumar Swaminathan 140382527734SSukumar Swaminathan /* Defines for mam */ 140482527734SSukumar Swaminathan #define EMLXS_REG_FCFI_MAM_SPMA 1 /* Server Provided MAC Address */ 140582527734SSukumar Swaminathan #define EMLXS_REG_FCFI_MAM_FPMA 2 /* Fabric Provided MAC Address */ 140682527734SSukumar Swaminathan 140782527734SSukumar Swaminathan /* Structure for MB Command UNREG_FCFI (0xA2) */ 140882527734SSukumar Swaminathan /* Good for SLI4 only */ 140982527734SSukumar Swaminathan 141082527734SSukumar Swaminathan typedef struct 141182527734SSukumar Swaminathan { 141282527734SSukumar Swaminathan uint32_t Rsvd1; 141382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 141482527734SSukumar Swaminathan uint16_t Rsvd2; 141582527734SSukumar Swaminathan uint16_t FCFI; 141682527734SSukumar Swaminathan #endif 141782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 141882527734SSukumar Swaminathan uint16_t FCFI; 141982527734SSukumar Swaminathan uint16_t Rsvd2; 142082527734SSukumar Swaminathan #endif 142182527734SSukumar Swaminathan } UNREG_FCFI_VAR; 142282527734SSukumar Swaminathan 142382527734SSukumar Swaminathan /* Structure for MB Command RESUME_RPI (0x9E) */ 142482527734SSukumar Swaminathan /* Good for SLI4 only */ 142582527734SSukumar Swaminathan 142682527734SSukumar Swaminathan typedef struct 142782527734SSukumar Swaminathan { 142882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 142982527734SSukumar Swaminathan uint16_t Rsvd1; 143082527734SSukumar Swaminathan uint16_t RPI; 143182527734SSukumar Swaminathan 143282527734SSukumar Swaminathan uint32_t EventTag; 143382527734SSukumar Swaminathan uint32_t rsvd2[3]; 143482527734SSukumar Swaminathan 143582527734SSukumar Swaminathan uint16_t VFI; 143682527734SSukumar Swaminathan uint16_t VPI; 143782527734SSukumar Swaminathan #endif 143882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 143982527734SSukumar Swaminathan uint16_t RPI; 144082527734SSukumar Swaminathan uint16_t Rsvd1; 144182527734SSukumar Swaminathan 144282527734SSukumar Swaminathan uint32_t EventTag; 144382527734SSukumar Swaminathan uint32_t rsvd2[3]; 144482527734SSukumar Swaminathan 144582527734SSukumar Swaminathan uint16_t VPI; 144682527734SSukumar Swaminathan uint16_t VFI; 144782527734SSukumar Swaminathan #endif 144882527734SSukumar Swaminathan 144982527734SSukumar Swaminathan } RESUME_RPI_VAR; 145082527734SSukumar Swaminathan 145182527734SSukumar Swaminathan 145282527734SSukumar Swaminathan /* Structure for MB Command UNREG_D_ID (0x23) */ 145382527734SSukumar Swaminathan 145482527734SSukumar Swaminathan typedef struct 145582527734SSukumar Swaminathan { 145682527734SSukumar Swaminathan uint32_t did; 145782527734SSukumar Swaminathan 145882527734SSukumar Swaminathan uint32_t rsvd2; 145982527734SSukumar Swaminathan uint32_t rsvd3; 146082527734SSukumar Swaminathan uint32_t rsvd4; 146182527734SSukumar Swaminathan uint32_t rsvd5; 146282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 146382527734SSukumar Swaminathan uint16_t rsvd6; 146482527734SSukumar Swaminathan uint16_t vpi; 146582527734SSukumar Swaminathan #endif 146682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 146782527734SSukumar Swaminathan uint16_t vpi; 146882527734SSukumar Swaminathan uint16_t rsvd6; 146982527734SSukumar Swaminathan #endif 147082527734SSukumar Swaminathan } UNREG_D_ID_VAR; 147182527734SSukumar Swaminathan 147282527734SSukumar Swaminathan 147382527734SSukumar Swaminathan /* Structure for MB Command READ_LA (21) */ 147482527734SSukumar Swaminathan /* Structure for MB Command READ_LA64 (0x95) */ 147582527734SSukumar Swaminathan 147682527734SSukumar Swaminathan typedef struct 147782527734SSukumar Swaminathan { 147882527734SSukumar Swaminathan uint32_t eventTag; /* Event tag */ 147982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 148082527734SSukumar Swaminathan uint32_t rsvd2:19; 148182527734SSukumar Swaminathan uint32_t fa:1; 148282527734SSukumar Swaminathan uint32_t mm:1; 148382527734SSukumar Swaminathan uint32_t tc:1; 148482527734SSukumar Swaminathan uint32_t pb:1; 148582527734SSukumar Swaminathan uint32_t il:1; 148682527734SSukumar Swaminathan uint32_t attType:8; 148782527734SSukumar Swaminathan #endif 148882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 148982527734SSukumar Swaminathan uint32_t attType:8; 149082527734SSukumar Swaminathan uint32_t il:1; 149182527734SSukumar Swaminathan uint32_t pb:1; 149282527734SSukumar Swaminathan uint32_t tc:1; 149382527734SSukumar Swaminathan uint32_t mm:1; 149482527734SSukumar Swaminathan uint32_t fa:1; 149582527734SSukumar Swaminathan uint32_t rsvd2:19; 149682527734SSukumar Swaminathan #endif 149782527734SSukumar Swaminathan #define AT_RESERVED 0x00 /* Reserved - attType */ 149882527734SSukumar Swaminathan #define AT_LINK_UP 0x01 /* Link is up */ 149982527734SSukumar Swaminathan #define AT_LINK_DOWN 0x02 /* Link is down */ 1500*8f23e9faSHans Rosenfeld #define AT_NO_HARD_ALPA 0x03 /* SLI4 */ 1501*8f23e9faSHans Rosenfeld 150282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 150382527734SSukumar Swaminathan uint8_t granted_AL_PA; 150482527734SSukumar Swaminathan uint8_t lipAlPs; 150582527734SSukumar Swaminathan uint8_t lipType; 150682527734SSukumar Swaminathan uint8_t topology; 150782527734SSukumar Swaminathan #endif 150882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 150982527734SSukumar Swaminathan uint8_t topology; 151082527734SSukumar Swaminathan uint8_t lipType; 151182527734SSukumar Swaminathan uint8_t lipAlPs; 151282527734SSukumar Swaminathan uint8_t granted_AL_PA; 151382527734SSukumar Swaminathan #endif 151482527734SSukumar Swaminathan 151582527734SSukumar Swaminathan /* lipType */ 151682527734SSukumar Swaminathan #define LT_PORT_INIT 0x00 /* An L_PORT initing (F7, AL_PS) - lipType */ 151782527734SSukumar Swaminathan #define LT_PORT_ERR 0x01 /* Err @L_PORT rcv'er (F8, AL_PS) */ 151882527734SSukumar Swaminathan #define LT_RESET_APORT 0x02 /* Lip Reset of some other port */ 151982527734SSukumar Swaminathan #define LT_RESET_MYPORT 0x03 /* Lip Reset of my port */ 152082527734SSukumar Swaminathan 152182527734SSukumar Swaminathan /* topology */ 152282527734SSukumar Swaminathan #define TOPOLOGY_PT_PT 0x01 /* Topology is pt-pt / pt-fabric */ 152382527734SSukumar Swaminathan #define TOPOLOGY_LOOP 0x02 /* Topology is FC-AL (private) */ 152482527734SSukumar Swaminathan 152582527734SSukumar Swaminathan union 152682527734SSukumar Swaminathan { 152782527734SSukumar Swaminathan ULP_BDE lilpBde; /* This BDE points to a */ 152882527734SSukumar Swaminathan /* 128 byte buffer to store */ 152982527734SSukumar Swaminathan /* the LILP AL_PA position */ 153082527734SSukumar Swaminathan /* map into */ 153182527734SSukumar Swaminathan ULP_BDE64 lilpBde64; 153282527734SSukumar Swaminathan } un; 153382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 153482527734SSukumar Swaminathan uint32_t Dlu:1; 153582527734SSukumar Swaminathan uint32_t Dtf:1; 153682527734SSukumar Swaminathan uint32_t Drsvd2:14; 153782527734SSukumar Swaminathan uint32_t DlnkSpeed:8; 153882527734SSukumar Swaminathan uint32_t DnlPort:4; 153982527734SSukumar Swaminathan uint32_t Dtx:2; 154082527734SSukumar Swaminathan uint32_t Drx:2; 154182527734SSukumar Swaminathan #endif 154282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 154382527734SSukumar Swaminathan uint32_t Drx:2; 154482527734SSukumar Swaminathan uint32_t Dtx:2; 154582527734SSukumar Swaminathan uint32_t DnlPort:4; 154682527734SSukumar Swaminathan uint32_t DlnkSpeed:8; 154782527734SSukumar Swaminathan uint32_t Drsvd2:14; 154882527734SSukumar Swaminathan uint32_t Dtf:1; 154982527734SSukumar Swaminathan uint32_t Dlu:1; 155082527734SSukumar Swaminathan #endif 155182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 155282527734SSukumar Swaminathan uint32_t Ulu:1; 155382527734SSukumar Swaminathan uint32_t Utf:1; 155482527734SSukumar Swaminathan uint32_t Ursvd2:14; 155582527734SSukumar Swaminathan uint32_t UlnkSpeed:8; 155682527734SSukumar Swaminathan uint32_t UnlPort:4; 155782527734SSukumar Swaminathan uint32_t Utx:2; 155882527734SSukumar Swaminathan uint32_t Urx:2; 155982527734SSukumar Swaminathan #endif 156082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 156182527734SSukumar Swaminathan uint32_t Urx:2; 156282527734SSukumar Swaminathan uint32_t Utx:2; 156382527734SSukumar Swaminathan uint32_t UnlPort:4; 156482527734SSukumar Swaminathan uint32_t UlnkSpeed:8; 156582527734SSukumar Swaminathan uint32_t Ursvd2:14; 156682527734SSukumar Swaminathan uint32_t Utf:1; 156782527734SSukumar Swaminathan uint32_t Ulu:1; 156882527734SSukumar Swaminathan #endif 156982527734SSukumar Swaminathan #define LA_1GHZ_LINK 0x04 /* lnkSpeed */ 157082527734SSukumar Swaminathan #define LA_2GHZ_LINK 0x08 /* lnkSpeed */ 157182527734SSukumar Swaminathan #define LA_4GHZ_LINK 0x10 /* lnkSpeed */ 157282527734SSukumar Swaminathan #define LA_8GHZ_LINK 0x20 /* lnkSpeed */ 157382527734SSukumar Swaminathan #define LA_10GHZ_LINK 0x40 /* lnkSpeed */ 1574*8f23e9faSHans Rosenfeld #define LA_16GHZ_LINK 0x80 /* lnkSpeed */ 157582527734SSukumar Swaminathan } READ_LA_VAR; 157682527734SSukumar Swaminathan 157782527734SSukumar Swaminathan 157882527734SSukumar Swaminathan /* Structure for MB Command CLEAR_LA (22) */ 157982527734SSukumar Swaminathan 158082527734SSukumar Swaminathan typedef struct 158182527734SSukumar Swaminathan { 158282527734SSukumar Swaminathan uint32_t eventTag; /* Event tag */ 158382527734SSukumar Swaminathan uint32_t rsvd1; 158482527734SSukumar Swaminathan } CLEAR_LA_VAR; 158582527734SSukumar Swaminathan 158682527734SSukumar Swaminathan /* Structure for MB Command DUMP */ 158782527734SSukumar Swaminathan /* Good for SLI2/3 only */ 158882527734SSukumar Swaminathan 158982527734SSukumar Swaminathan typedef struct 159082527734SSukumar Swaminathan { 159182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 159282527734SSukumar Swaminathan uint32_t rsvd:25; 159382527734SSukumar Swaminathan uint32_t ra:1; 159482527734SSukumar Swaminathan uint32_t co:1; 159582527734SSukumar Swaminathan uint32_t cv:1; 159682527734SSukumar Swaminathan uint32_t type:4; 159782527734SSukumar Swaminathan 159882527734SSukumar Swaminathan uint32_t entry_index:16; 159982527734SSukumar Swaminathan uint32_t region_id:16; 160082527734SSukumar Swaminathan #endif 160182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 160282527734SSukumar Swaminathan uint32_t type:4; 160382527734SSukumar Swaminathan uint32_t cv:1; 160482527734SSukumar Swaminathan uint32_t co:1; 160582527734SSukumar Swaminathan uint32_t ra:1; 160682527734SSukumar Swaminathan uint32_t rsvd:25; 160782527734SSukumar Swaminathan 160882527734SSukumar Swaminathan uint32_t region_id:16; 160982527734SSukumar Swaminathan uint32_t entry_index:16; 161082527734SSukumar Swaminathan #endif 161182527734SSukumar Swaminathan uint32_t base_adr; 161282527734SSukumar Swaminathan uint32_t word_cnt; 161382527734SSukumar Swaminathan uint32_t resp_offset; 161482527734SSukumar Swaminathan } DUMP_VAR; 161582527734SSukumar Swaminathan 161682527734SSukumar Swaminathan /* Structure for MB Command DUMP */ 161782527734SSukumar Swaminathan /* Good for SLI4 only */ 161882527734SSukumar Swaminathan 161982527734SSukumar Swaminathan typedef struct 162082527734SSukumar Swaminathan { 162182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 162282527734SSukumar Swaminathan uint32_t ppi:4; 162382527734SSukumar Swaminathan uint32_t phy_index:4; 162482527734SSukumar Swaminathan uint32_t rsvd:20; 162582527734SSukumar Swaminathan uint32_t type:4; 162682527734SSukumar Swaminathan 162782527734SSukumar Swaminathan uint32_t entry_index:16; 162882527734SSukumar Swaminathan uint32_t region_id:16; 162982527734SSukumar Swaminathan #endif 163082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 163182527734SSukumar Swaminathan uint32_t type:4; 163282527734SSukumar Swaminathan uint32_t rsvd:20; 163382527734SSukumar Swaminathan uint32_t phy_index:4; 163482527734SSukumar Swaminathan uint32_t ppi:4; 163582527734SSukumar Swaminathan 163682527734SSukumar Swaminathan uint32_t region_id:16; 163782527734SSukumar Swaminathan uint32_t entry_index:16; 163882527734SSukumar Swaminathan #endif 163982527734SSukumar Swaminathan uint32_t available_cnt; 164082527734SSukumar Swaminathan uint32_t addrLow; 164182527734SSukumar Swaminathan uint32_t addrHigh; 164282527734SSukumar Swaminathan uint32_t rsp_cnt; 164382527734SSukumar Swaminathan } DUMP4_VAR; 164482527734SSukumar Swaminathan 164582527734SSukumar Swaminathan /* 164682527734SSukumar Swaminathan * Dump type 164782527734SSukumar Swaminathan */ 164882527734SSukumar Swaminathan #define DMP_MEM_REG 0x1 164982527734SSukumar Swaminathan #define DMP_NV_PARAMS 0x2 165082527734SSukumar Swaminathan 165182527734SSukumar Swaminathan /* 165282527734SSukumar Swaminathan * Dump region ID 165382527734SSukumar Swaminathan */ 165482527734SSukumar Swaminathan #define NODE_CFG_A_REGION_ID 0 165582527734SSukumar Swaminathan #define NODE_CFG_B_REGION_ID 1 165682527734SSukumar Swaminathan #define NODE_CFG_C_REGION_ID 2 165782527734SSukumar Swaminathan #define NODE_CFG_D_REGION_ID 3 165882527734SSukumar Swaminathan #define WAKE_UP_PARMS_REGION_ID 4 165982527734SSukumar Swaminathan #define DEF_PCI_CFG_REGION_ID 5 166082527734SSukumar Swaminathan #define PCI_CFG_1_REGION_ID 6 166182527734SSukumar Swaminathan #define PCI_CFG_2_REGION_ID 7 166282527734SSukumar Swaminathan #define RSVD1_REGION_ID 8 166382527734SSukumar Swaminathan #define RSVD2_REGION_ID 9 166482527734SSukumar Swaminathan #define RSVD3_REGION_ID 10 166582527734SSukumar Swaminathan #define RSVD4_REGION_ID 11 166682527734SSukumar Swaminathan #define RSVD5_REGION_ID 12 166782527734SSukumar Swaminathan #define RSVD6_REGION_ID 13 166882527734SSukumar Swaminathan #define RSVD7_REGION_ID 14 166982527734SSukumar Swaminathan #define DIAG_TRACE_REGION_ID 15 167082527734SSukumar Swaminathan #define WWN_REGION_ID 16 167182527734SSukumar Swaminathan 167282527734SSukumar Swaminathan #define DMP_VPD_REGION 14 167382527734SSukumar Swaminathan #define DMP_VPD_SIZE 1024 167482527734SSukumar Swaminathan #define DMP_VPD_DUMP_WCOUNT 24 167582527734SSukumar Swaminathan 167682527734SSukumar Swaminathan #define DMP_FCOE_REGION 23 167782527734SSukumar Swaminathan #define DMP_FCOE_DUMP_WCOUNT 256 167882527734SSukumar Swaminathan 167982527734SSukumar Swaminathan 168082527734SSukumar Swaminathan /* Structure for MB Command UPDATE_CFG */ 168182527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 168282527734SSukumar Swaminathan 168382527734SSukumar Swaminathan typedef struct 168482527734SSukumar Swaminathan { 168582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 168682527734SSukumar Swaminathan uint32_t rsvd2:16; 168782527734SSukumar Swaminathan uint32_t proc_type:8; 168882527734SSukumar Swaminathan uint32_t rsvd1:1; 168982527734SSukumar Swaminathan uint32_t Abit:1; 169082527734SSukumar Swaminathan uint32_t Obit:1; 169182527734SSukumar Swaminathan uint32_t Vbit:1; 169282527734SSukumar Swaminathan uint32_t req_type:4; 169382527734SSukumar Swaminathan #define INIT_REGION 1 169482527734SSukumar Swaminathan #define UPDATE_DATA 2 169582527734SSukumar Swaminathan #define CLEAN_UP_CFG 3 169682527734SSukumar Swaminathan uint32_t entry_len:16; 169782527734SSukumar Swaminathan uint32_t region_id:16; 169882527734SSukumar Swaminathan #endif 169982527734SSukumar Swaminathan 170082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 170182527734SSukumar Swaminathan uint32_t req_type:4; 170282527734SSukumar Swaminathan #define INIT_REGION 1 170382527734SSukumar Swaminathan #define UPDATE_DATA 2 170482527734SSukumar Swaminathan #define CLEAN_UP_CFG 3 170582527734SSukumar Swaminathan uint32_t Vbit:1; 170682527734SSukumar Swaminathan uint32_t Obit:1; 170782527734SSukumar Swaminathan uint32_t Abit:1; 170882527734SSukumar Swaminathan uint32_t rsvd1:1; 170982527734SSukumar Swaminathan uint32_t proc_type:8; 171082527734SSukumar Swaminathan uint32_t rsvd2:16; 171182527734SSukumar Swaminathan 171282527734SSukumar Swaminathan uint32_t region_id:16; 171382527734SSukumar Swaminathan uint32_t entry_len:16; 171482527734SSukumar Swaminathan #endif 171582527734SSukumar Swaminathan 171682527734SSukumar Swaminathan uint32_t rsp_info; 171782527734SSukumar Swaminathan uint32_t byte_len; 171882527734SSukumar Swaminathan uint32_t cfg_data; 171982527734SSukumar Swaminathan } UPDATE_CFG_VAR; 172082527734SSukumar Swaminathan 172182527734SSukumar Swaminathan /* Structure for MB Command DEL_LD_ENTRY (29) */ 172282527734SSukumar Swaminathan 172382527734SSukumar Swaminathan typedef struct 172482527734SSukumar Swaminathan { 172582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 172682527734SSukumar Swaminathan uint32_t list_req:2; 172782527734SSukumar Swaminathan uint32_t list_rsp:2; 172882527734SSukumar Swaminathan uint32_t rsvd:28; 172982527734SSukumar Swaminathan #else 173082527734SSukumar Swaminathan uint32_t rsvd:28; 173182527734SSukumar Swaminathan uint32_t list_rsp:2; 173282527734SSukumar Swaminathan uint32_t list_req:2; 173382527734SSukumar Swaminathan #endif 173482527734SSukumar Swaminathan 173582527734SSukumar Swaminathan #define FLASH_LOAD_LIST 1 173682527734SSukumar Swaminathan #define RAM_LOAD_LIST 2 173782527734SSukumar Swaminathan #define BOTH_LISTS 3 173882527734SSukumar Swaminathan 173982527734SSukumar Swaminathan PROG_ID prog_id; 174082527734SSukumar Swaminathan } DEL_LD_ENTRY_VAR; 174182527734SSukumar Swaminathan 174282527734SSukumar Swaminathan /* Structure for MB Command LOAD_AREA (81) */ 174382527734SSukumar Swaminathan typedef struct 174482527734SSukumar Swaminathan { 174582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 174682527734SSukumar Swaminathan uint32_t load_cmplt:1; 174782527734SSukumar Swaminathan uint32_t method:1; 174882527734SSukumar Swaminathan uint32_t rsvd1:1; 174982527734SSukumar Swaminathan uint32_t update_flash:1; 175082527734SSukumar Swaminathan uint32_t erase_or_prog:1; 175182527734SSukumar Swaminathan uint32_t version:1; 175282527734SSukumar Swaminathan uint32_t rsvd2:2; 175382527734SSukumar Swaminathan uint32_t progress:8; 175482527734SSukumar Swaminathan uint32_t step:8; 175582527734SSukumar Swaminathan uint32_t area_id:8; 175682527734SSukumar Swaminathan #else 175782527734SSukumar Swaminathan uint32_t area_id:8; 175882527734SSukumar Swaminathan uint32_t step:8; 175982527734SSukumar Swaminathan uint32_t progress:8; 176082527734SSukumar Swaminathan uint32_t rsvd2:2; 176182527734SSukumar Swaminathan uint32_t version:1; 176282527734SSukumar Swaminathan uint32_t erase_or_prog:1; 176382527734SSukumar Swaminathan uint32_t update_flash:1; 176482527734SSukumar Swaminathan uint32_t rsvd1:1; 176582527734SSukumar Swaminathan uint32_t method:1; 176682527734SSukumar Swaminathan uint32_t load_cmplt:1; 176782527734SSukumar Swaminathan #endif 176882527734SSukumar Swaminathan uint32_t dl_to_adr; 176982527734SSukumar Swaminathan uint32_t dl_len; 177082527734SSukumar Swaminathan union 177182527734SSukumar Swaminathan { 177282527734SSukumar Swaminathan uint32_t dl_from_slim_offset; 177382527734SSukumar Swaminathan ULP_BDE dl_from_bde; 177482527734SSukumar Swaminathan ULP_BDE64 dl_from_bde64; 177582527734SSukumar Swaminathan PROG_ID prog_id; 177682527734SSukumar Swaminathan } un; 177782527734SSukumar Swaminathan } LOAD_AREA_VAR; 177882527734SSukumar Swaminathan 177982527734SSukumar Swaminathan /* Structure for MB Command LOAD_EXP_ROM (9C) */ 178082527734SSukumar Swaminathan typedef struct 178182527734SSukumar Swaminathan { 178282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 178382527734SSukumar Swaminathan uint32_t rsvd1:8; 178482527734SSukumar Swaminathan uint32_t progress:8; 178582527734SSukumar Swaminathan uint32_t step:8; 178682527734SSukumar Swaminathan uint32_t rsvd2:8; 178782527734SSukumar Swaminathan #else 178882527734SSukumar Swaminathan uint32_t rsvd2:8; 178982527734SSukumar Swaminathan uint32_t step:8; 179082527734SSukumar Swaminathan uint32_t progress:8; 179182527734SSukumar Swaminathan uint32_t rsvd1:8; 179282527734SSukumar Swaminathan #endif 179382527734SSukumar Swaminathan uint32_t dl_to_adr; 179482527734SSukumar Swaminathan uint32_t rsvd3; 179582527734SSukumar Swaminathan union 179682527734SSukumar Swaminathan { 179782527734SSukumar Swaminathan uint32_t word[2]; 179882527734SSukumar Swaminathan PROG_ID prog_id; 179982527734SSukumar Swaminathan } un; 180082527734SSukumar Swaminathan } LOAD_EXP_ROM_VAR; 180182527734SSukumar Swaminathan 180282527734SSukumar Swaminathan 180382527734SSukumar Swaminathan /* Structure for MB Command CONFIG_HBQ (7C) */ 180482527734SSukumar Swaminathan 180582527734SSukumar Swaminathan typedef struct 180682527734SSukumar Swaminathan { 180782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 180882527734SSukumar Swaminathan uint32_t rsvd1:7; 180982527734SSukumar Swaminathan uint32_t recvNotify:1; /* Receive Notification */ 181082527734SSukumar Swaminathan uint32_t numMask:8; /* # Mask Entries */ 181182527734SSukumar Swaminathan uint32_t profile:8; /* Selection Profile */ 181282527734SSukumar Swaminathan uint32_t rsvd2:8; 181382527734SSukumar Swaminathan #endif 181482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 181582527734SSukumar Swaminathan uint32_t rsvd2:8; 181682527734SSukumar Swaminathan uint32_t profile:8; /* Selection Profile */ 181782527734SSukumar Swaminathan uint32_t numMask:8; /* # Mask Entries */ 181882527734SSukumar Swaminathan uint32_t recvNotify:1; /* Receive Notification */ 181982527734SSukumar Swaminathan uint32_t rsvd1:7; 182082527734SSukumar Swaminathan #endif 182182527734SSukumar Swaminathan 182282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 182382527734SSukumar Swaminathan uint32_t hbqId:16; 182482527734SSukumar Swaminathan uint32_t rsvd3:12; 182582527734SSukumar Swaminathan uint32_t ringMask:4; 182682527734SSukumar Swaminathan #endif 182782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 182882527734SSukumar Swaminathan uint32_t ringMask:4; 182982527734SSukumar Swaminathan uint32_t rsvd3:12; 183082527734SSukumar Swaminathan uint32_t hbqId:16; 183182527734SSukumar Swaminathan #endif 183282527734SSukumar Swaminathan 183382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 183482527734SSukumar Swaminathan uint32_t numEntries:16; 183582527734SSukumar Swaminathan uint32_t rsvd4:8; 183682527734SSukumar Swaminathan uint32_t headerLen:8; 183782527734SSukumar Swaminathan #endif 183882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 183982527734SSukumar Swaminathan uint32_t headerLen:8; 184082527734SSukumar Swaminathan uint32_t rsvd4:8; 184182527734SSukumar Swaminathan uint32_t numEntries:16; 184282527734SSukumar Swaminathan #endif 184382527734SSukumar Swaminathan 184482527734SSukumar Swaminathan uint32_t hbqaddrLow; 184582527734SSukumar Swaminathan uint32_t hbqaddrHigh; 184682527734SSukumar Swaminathan 184782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 184882527734SSukumar Swaminathan uint32_t rsvd5:31; 184982527734SSukumar Swaminathan uint32_t logEntry:1; 185082527734SSukumar Swaminathan #endif 185182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 185282527734SSukumar Swaminathan uint32_t logEntry:1; 185382527734SSukumar Swaminathan uint32_t rsvd5:31; 185482527734SSukumar Swaminathan #endif 185582527734SSukumar Swaminathan 185682527734SSukumar Swaminathan uint32_t rsvd6; /* w7 */ 185782527734SSukumar Swaminathan uint32_t rsvd7; /* w8 */ 185882527734SSukumar Swaminathan uint32_t rsvd8; /* w9 */ 185982527734SSukumar Swaminathan 186082527734SSukumar Swaminathan HBQ_MASK hbqMasks[6]; 186182527734SSukumar Swaminathan 186282527734SSukumar Swaminathan union 186382527734SSukumar Swaminathan { 186482527734SSukumar Swaminathan uint32_t allprofiles[12]; 186582527734SSukumar Swaminathan 186682527734SSukumar Swaminathan struct 186782527734SSukumar Swaminathan { 186882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 186982527734SSukumar Swaminathan uint32_t seqlenoff:16; 187082527734SSukumar Swaminathan uint32_t maxlen:16; 187182527734SSukumar Swaminathan #endif 187282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 187382527734SSukumar Swaminathan uint32_t maxlen:16; 187482527734SSukumar Swaminathan uint32_t seqlenoff:16; 187582527734SSukumar Swaminathan #endif 187682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 187782527734SSukumar Swaminathan uint32_t rsvd1:28; 187882527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 187982527734SSukumar Swaminathan #endif 188082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 188182527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 188282527734SSukumar Swaminathan uint32_t rsvd1:28; 188382527734SSukumar Swaminathan #endif 188482527734SSukumar Swaminathan uint32_t rsvd[10]; 188582527734SSukumar Swaminathan } profile2; 188682527734SSukumar Swaminathan 188782527734SSukumar Swaminathan struct 188882527734SSukumar Swaminathan { 188982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 189082527734SSukumar Swaminathan uint32_t seqlenoff:16; 189182527734SSukumar Swaminathan uint32_t maxlen:16; 189282527734SSukumar Swaminathan #endif 189382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 189482527734SSukumar Swaminathan uint32_t maxlen:16; 189582527734SSukumar Swaminathan uint32_t seqlenoff:16; 189682527734SSukumar Swaminathan #endif 189782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 189882527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 189982527734SSukumar Swaminathan uint32_t rsvd1:12; 190082527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 190182527734SSukumar Swaminathan #endif 190282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 190382527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 190482527734SSukumar Swaminathan uint32_t rsvd1:12; 190582527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 190682527734SSukumar Swaminathan #endif 190782527734SSukumar Swaminathan uint32_t cmdmatch[8]; 190882527734SSukumar Swaminathan 190982527734SSukumar Swaminathan uint32_t rsvd[2]; 191082527734SSukumar Swaminathan } profile3; 191182527734SSukumar Swaminathan 191282527734SSukumar Swaminathan struct 191382527734SSukumar Swaminathan { 191482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 191582527734SSukumar Swaminathan uint32_t seqlenoff:16; 191682527734SSukumar Swaminathan uint32_t maxlen:16; 191782527734SSukumar Swaminathan #endif 191882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 191982527734SSukumar Swaminathan uint32_t maxlen:16; 192082527734SSukumar Swaminathan uint32_t seqlenoff:16; 192182527734SSukumar Swaminathan #endif 192282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 192382527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 192482527734SSukumar Swaminathan uint32_t rsvd1:12; 192582527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 192682527734SSukumar Swaminathan #endif 192782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 192882527734SSukumar Swaminathan uint32_t seqlenbcnt:4; 192982527734SSukumar Swaminathan uint32_t rsvd1:12; 193082527734SSukumar Swaminathan uint32_t cmdcodeoff:28; 193182527734SSukumar Swaminathan #endif 193282527734SSukumar Swaminathan uint32_t cmdmatch[8]; 193382527734SSukumar Swaminathan 193482527734SSukumar Swaminathan uint32_t rsvd[2]; 193582527734SSukumar Swaminathan } profile5; 193682527734SSukumar Swaminathan } profiles; 193782527734SSukumar Swaminathan } CONFIG_HBQ_VAR; 193882527734SSukumar Swaminathan 193982527734SSukumar Swaminathan 194082527734SSukumar Swaminathan /* Structure for MB Command REG_VPI(0x96) */ 194182527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */ 194282527734SSukumar Swaminathan 194382527734SSukumar Swaminathan typedef struct 194482527734SSukumar Swaminathan { 194582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 194682527734SSukumar Swaminathan uint32_t rsvd1; 1947a9800bebSGarrett D'Amore uint32_t rsvd2:7; 1948a9800bebSGarrett D'Amore uint32_t upd:1; 194982527734SSukumar Swaminathan uint32_t sid:24; 1950b3660a96SSukumar Swaminathan uint32_t portname[2]; /* N_PORT name */ 195182527734SSukumar Swaminathan uint32_t rsvd5; 195282527734SSukumar Swaminathan uint16_t vfi; 195382527734SSukumar Swaminathan uint16_t vpi; 195482527734SSukumar Swaminathan #endif 195582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 195682527734SSukumar Swaminathan uint32_t rsvd1; 195782527734SSukumar Swaminathan uint32_t sid:24; 1958a9800bebSGarrett D'Amore uint32_t upd:1; 1959a9800bebSGarrett D'Amore uint32_t rsvd2:7; 1960b3660a96SSukumar Swaminathan uint32_t portname[2]; /* N_PORT name */ 196182527734SSukumar Swaminathan uint32_t rsvd5; 196282527734SSukumar Swaminathan uint16_t vpi; 196382527734SSukumar Swaminathan uint16_t vfi; 196482527734SSukumar Swaminathan #endif 196582527734SSukumar Swaminathan } REG_VPI_VAR; 196682527734SSukumar Swaminathan 196782527734SSukumar Swaminathan /* Structure for MB Command INIT_VPI(0xA3) */ 196882527734SSukumar Swaminathan /* Good for SLI4 only */ 196982527734SSukumar Swaminathan 197082527734SSukumar Swaminathan typedef struct 197182527734SSukumar Swaminathan { 197282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 197382527734SSukumar Swaminathan uint16_t vfi; 197482527734SSukumar Swaminathan uint16_t vpi; 197582527734SSukumar Swaminathan #endif 197682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 197782527734SSukumar Swaminathan uint16_t vpi; 197882527734SSukumar Swaminathan uint16_t vfi; 197982527734SSukumar Swaminathan #endif 198082527734SSukumar Swaminathan } INIT_VPI_VAR; 198182527734SSukumar Swaminathan 198282527734SSukumar Swaminathan /* Structure for MB Command UNREG_VPI (0x97) */ 1983e2ca2865SSukumar Swaminathan /* Good for SLI2/3 */ 198482527734SSukumar Swaminathan 198582527734SSukumar Swaminathan typedef struct 198682527734SSukumar Swaminathan { 198782527734SSukumar Swaminathan uint32_t rsvd1; 1988e2ca2865SSukumar Swaminathan uint32_t rsvd2; 1989e2ca2865SSukumar Swaminathan uint32_t rsvd3; 1990e2ca2865SSukumar Swaminathan uint32_t rsvd4; 1991e2ca2865SSukumar Swaminathan uint32_t rsvd5; 199282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 1993e2ca2865SSukumar Swaminathan uint16_t rsvd6; 199482527734SSukumar Swaminathan uint16_t vpi; 199582527734SSukumar Swaminathan #endif 199682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 199782527734SSukumar Swaminathan uint16_t vpi; 1998e2ca2865SSukumar Swaminathan uint16_t rsvd6; 199982527734SSukumar Swaminathan #endif 200082527734SSukumar Swaminathan } UNREG_VPI_VAR; 200182527734SSukumar Swaminathan 2002e2ca2865SSukumar Swaminathan /* Structure for MB Command UNREG_VPI (0x97) */ 2003e2ca2865SSukumar Swaminathan /* Good for SLI4 */ 2004e2ca2865SSukumar Swaminathan 2005e2ca2865SSukumar Swaminathan typedef struct 2006e2ca2865SSukumar Swaminathan { 2007e2ca2865SSukumar Swaminathan uint32_t rsvd1; 2008e2ca2865SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 2009e2ca2865SSukumar Swaminathan uint8_t ii:2; 2010e2ca2865SSukumar Swaminathan uint16_t rsvd2:14; 2011e2ca2865SSukumar Swaminathan uint16_t index; 2012e2ca2865SSukumar Swaminathan #endif 2013e2ca2865SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 2014e2ca2865SSukumar Swaminathan uint16_t index; 2015e2ca2865SSukumar Swaminathan uint16_t rsvd2:14; 2016e2ca2865SSukumar Swaminathan uint8_t ii:2; 2017e2ca2865SSukumar Swaminathan #endif 2018e2ca2865SSukumar Swaminathan } UNREG_VPI_VAR4; 2019e2ca2865SSukumar Swaminathan 202082527734SSukumar Swaminathan /* Structure for MB Command REG_VFI(0x9F) */ 202182527734SSukumar Swaminathan /* Good for SLI4 only */ 202282527734SSukumar Swaminathan 202382527734SSukumar Swaminathan typedef struct 202482527734SSukumar Swaminathan { 202582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 2026*8f23e9faSHans Rosenfeld uint16_t rsvd1:2; 2027*8f23e9faSHans Rosenfeld uint16_t upd:1; 2028*8f23e9faSHans Rosenfeld uint16_t vp:1; 2029*8f23e9faSHans Rosenfeld uint16_t rsvd2:12; 203082527734SSukumar Swaminathan uint16_t vfi; 203182527734SSukumar Swaminathan 203282527734SSukumar Swaminathan uint16_t vpi; 203382527734SSukumar Swaminathan uint16_t fcfi; 203482527734SSukumar Swaminathan 2035b3660a96SSukumar Swaminathan uint32_t portname[2]; /* N_PORT name */ 203682527734SSukumar Swaminathan 203782527734SSukumar Swaminathan ULP_BDE64 bde; 203882527734SSukumar Swaminathan 203982527734SSukumar Swaminathan /* CHANGE with next firmware drop */ 204082527734SSukumar Swaminathan uint32_t edtov; 204182527734SSukumar Swaminathan uint32_t ratov; 204282527734SSukumar Swaminathan 204382527734SSukumar Swaminathan uint32_t rsvd5:8; 204482527734SSukumar Swaminathan uint32_t sid:24; 204582527734SSukumar Swaminathan #endif 204682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 204782527734SSukumar Swaminathan uint16_t vfi; 2048*8f23e9faSHans Rosenfeld uint16_t rsvd2:12; 2049*8f23e9faSHans Rosenfeld uint16_t vp:1; 2050*8f23e9faSHans Rosenfeld uint16_t upd:1; 2051*8f23e9faSHans Rosenfeld uint16_t rsvd1:2; 205282527734SSukumar Swaminathan 205382527734SSukumar Swaminathan uint16_t fcfi; 205482527734SSukumar Swaminathan uint16_t vpi; 205582527734SSukumar Swaminathan 2056b3660a96SSukumar Swaminathan uint32_t portname[2]; /* N_PORT name */ 205782527734SSukumar Swaminathan 205882527734SSukumar Swaminathan ULP_BDE64 bde; 205982527734SSukumar Swaminathan 206082527734SSukumar Swaminathan /* CHANGE with next firmware drop */ 206182527734SSukumar Swaminathan uint32_t edtov; 206282527734SSukumar Swaminathan uint32_t ratov; 206382527734SSukumar Swaminathan 206482527734SSukumar Swaminathan uint32_t sid:24; 206582527734SSukumar Swaminathan uint32_t rsvd5:8; 206682527734SSukumar Swaminathan #endif 206782527734SSukumar Swaminathan } REG_VFI_VAR; 206882527734SSukumar Swaminathan 206982527734SSukumar Swaminathan /* Structure for MB Command INIT_VFI(0xA4) */ 207082527734SSukumar Swaminathan /* Good for SLI4 only */ 207182527734SSukumar Swaminathan 207282527734SSukumar Swaminathan typedef struct 207382527734SSukumar Swaminathan { 207482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 207582527734SSukumar Swaminathan uint32_t vr:1; 207682527734SSukumar Swaminathan uint32_t vt:1; 207782527734SSukumar Swaminathan uint32_t vf:1; 207882527734SSukumar Swaminathan uint32_t rsvd1:13; 207982527734SSukumar Swaminathan uint32_t vfi:16; 208082527734SSukumar Swaminathan 208182527734SSukumar Swaminathan uint16_t rsvd2; 208282527734SSukumar Swaminathan uint16_t fcfi; 208382527734SSukumar Swaminathan 208482527734SSukumar Swaminathan uint32_t rsvd3:16; 208582527734SSukumar Swaminathan uint32_t pri:3; 208682527734SSukumar Swaminathan uint32_t vf_id:12; 208782527734SSukumar Swaminathan uint32_t rsvd4:1; 208882527734SSukumar Swaminathan 208982527734SSukumar Swaminathan uint32_t hop_count:8; 209082527734SSukumar Swaminathan uint32_t rsvd5:24; 209182527734SSukumar Swaminathan #endif 209282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 209382527734SSukumar Swaminathan uint32_t vfi:16; 209482527734SSukumar Swaminathan uint32_t rsvd1:13; 209582527734SSukumar Swaminathan uint32_t vf:1; 209682527734SSukumar Swaminathan uint32_t vt:1; 209782527734SSukumar Swaminathan uint32_t vr:1; 209882527734SSukumar Swaminathan 209982527734SSukumar Swaminathan uint16_t fcfi; 210082527734SSukumar Swaminathan uint16_t rsvd2; 210182527734SSukumar Swaminathan 210282527734SSukumar Swaminathan uint32_t rsvd4:1; 210382527734SSukumar Swaminathan uint32_t vf_id:12; 210482527734SSukumar Swaminathan uint32_t pri:3; 210582527734SSukumar Swaminathan uint32_t rsvd3:16; 210682527734SSukumar Swaminathan 210782527734SSukumar Swaminathan uint32_t rsvd5:24; 210882527734SSukumar Swaminathan uint32_t hop_count:8; 210982527734SSukumar Swaminathan #endif 211082527734SSukumar Swaminathan } INIT_VFI_VAR; 211182527734SSukumar Swaminathan 211282527734SSukumar Swaminathan /* Structure for MB Command UNREG_VFI (0xA1) */ 211382527734SSukumar Swaminathan /* Good for SLI4 only */ 211482527734SSukumar Swaminathan 211582527734SSukumar Swaminathan typedef struct 211682527734SSukumar Swaminathan { 211782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 211882527734SSukumar Swaminathan uint32_t rsvd1:3; 211982527734SSukumar Swaminathan uint32_t vp:1; 212082527734SSukumar Swaminathan uint32_t rsvd2:28; 212182527734SSukumar Swaminathan 212282527734SSukumar Swaminathan uint16_t vpi; 212382527734SSukumar Swaminathan uint16_t vfi; 212482527734SSukumar Swaminathan #endif 212582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 212682527734SSukumar Swaminathan uint32_t rsvd2:28; 212782527734SSukumar Swaminathan uint32_t vp:1; 212882527734SSukumar Swaminathan uint32_t rsvd1:3; 212982527734SSukumar Swaminathan 213082527734SSukumar Swaminathan uint16_t vfi; 213182527734SSukumar Swaminathan uint16_t vpi; 213282527734SSukumar Swaminathan #endif 213382527734SSukumar Swaminathan } UNREG_VFI_VAR; 213482527734SSukumar Swaminathan 213582527734SSukumar Swaminathan 213682527734SSukumar Swaminathan 213782527734SSukumar Swaminathan typedef struct 213882527734SSukumar Swaminathan { 213982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 214082527734SSukumar Swaminathan uint32_t read_log:1; 214182527734SSukumar Swaminathan uint32_t clear_log:1; 214282527734SSukumar Swaminathan uint32_t mbox_rsp:1; 214382527734SSukumar Swaminathan uint32_t resv:28; 214482527734SSukumar Swaminathan #endif 214582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 214682527734SSukumar Swaminathan uint32_t resv:28; 214782527734SSukumar Swaminathan uint32_t mbox_rsp:1; 214882527734SSukumar Swaminathan uint32_t clear_log:1; 214982527734SSukumar Swaminathan uint32_t read_log:1; 215082527734SSukumar Swaminathan #endif 215182527734SSukumar Swaminathan 215282527734SSukumar Swaminathan uint32_t offset; 215382527734SSukumar Swaminathan 215482527734SSukumar Swaminathan union 215582527734SSukumar Swaminathan { 215682527734SSukumar Swaminathan ULP_BDE sp; 215782527734SSukumar Swaminathan ULP_BDE64 sp64; 215882527734SSukumar Swaminathan } un; 215982527734SSukumar Swaminathan } READ_EVT_LOG_VAR; 216082527734SSukumar Swaminathan 216182527734SSukumar Swaminathan typedef struct 216282527734SSukumar Swaminathan { 216382527734SSukumar Swaminathan 216482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 216582527734SSukumar Swaminathan uint16_t split_log_next; 216682527734SSukumar Swaminathan uint16_t log_next; 216782527734SSukumar Swaminathan 216882527734SSukumar Swaminathan uint32_t size; 216982527734SSukumar Swaminathan 217082527734SSukumar Swaminathan uint32_t format:8; 217182527734SSukumar Swaminathan uint32_t resv2:22; 217282527734SSukumar Swaminathan uint32_t log_level:1; 217382527734SSukumar Swaminathan uint32_t split_log:1; 217482527734SSukumar Swaminathan #endif 217582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 217682527734SSukumar Swaminathan uint16_t log_next; 217782527734SSukumar Swaminathan uint16_t split_log_next; 217882527734SSukumar Swaminathan 217982527734SSukumar Swaminathan uint32_t size; 218082527734SSukumar Swaminathan 218182527734SSukumar Swaminathan uint32_t split_log:1; 218282527734SSukumar Swaminathan uint32_t log_level:1; 218382527734SSukumar Swaminathan uint32_t resv2:22; 218482527734SSukumar Swaminathan uint32_t format:8; 218582527734SSukumar Swaminathan #endif 218682527734SSukumar Swaminathan 218782527734SSukumar Swaminathan uint32_t offset; 218882527734SSukumar Swaminathan } LOG_STATUS_VAR; 218982527734SSukumar Swaminathan 219082527734SSukumar Swaminathan 219182527734SSukumar Swaminathan /* Structure for MB Command CONFIG_PORT (0x88) */ 219282527734SSukumar Swaminathan typedef struct 219382527734SSukumar Swaminathan { 219482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 219582527734SSukumar Swaminathan uint32_t cBE:1; 219682527734SSukumar Swaminathan uint32_t cET:1; 219782527734SSukumar Swaminathan uint32_t cHpcb:1; 219882527734SSukumar Swaminathan uint32_t rMA:1; 219982527734SSukumar Swaminathan uint32_t sli_mode:4; 220082527734SSukumar Swaminathan uint32_t pcbLen:24; /* bit 23:0 of memory based port */ 220182527734SSukumar Swaminathan /* config block */ 220282527734SSukumar Swaminathan #endif 220382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 220482527734SSukumar Swaminathan uint32_t pcbLen:24; /* bit 23:0 of memory based port */ 220582527734SSukumar Swaminathan /* config block */ 220682527734SSukumar Swaminathan uint32_t sli_mode:4; 220782527734SSukumar Swaminathan uint32_t rMA:1; 220882527734SSukumar Swaminathan uint32_t cHpcb:1; 220982527734SSukumar Swaminathan uint32_t cET:1; 221082527734SSukumar Swaminathan uint32_t cBE:1; 221182527734SSukumar Swaminathan #endif 221282527734SSukumar Swaminathan 221382527734SSukumar Swaminathan uint32_t pcbLow; /* bit 31:0 of memory based port */ 221482527734SSukumar Swaminathan /* config block */ 221582527734SSukumar Swaminathan uint32_t pcbHigh; /* bit 63:32 of memory based port */ 221682527734SSukumar Swaminathan /* config block */ 221782527734SSukumar Swaminathan uint32_t hbainit[5]; 221882527734SSukumar Swaminathan 221982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 222082527734SSukumar Swaminathan uint32_t hps:1; /* Host pointers in SLIM */ 222182527734SSukumar Swaminathan uint32_t rsvd:31; 222282527734SSukumar Swaminathan #endif 222382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 222482527734SSukumar Swaminathan uint32_t rsvd:31; 222582527734SSukumar Swaminathan uint32_t hps:1; /* Host pointers in SLIM */ 222682527734SSukumar Swaminathan #endif 222782527734SSukumar Swaminathan 222882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 222982527734SSukumar Swaminathan uint32_t rsvd1:24; 223082527734SSukumar Swaminathan uint32_t cmv:1; /* Configure Max VPIs */ 223182527734SSukumar Swaminathan uint32_t ccrp:1; /* Config Command Ring Polling */ 223282527734SSukumar Swaminathan uint32_t csah:1; /* Configure Synchronous Abort */ 223382527734SSukumar Swaminathan /* Handling */ 223482527734SSukumar Swaminathan uint32_t chbs:1; /* Cofigure Host Backing store */ 223582527734SSukumar Swaminathan uint32_t cinb:1; /* Enable Interrupt Notification */ 223682527734SSukumar Swaminathan /* Block */ 223782527734SSukumar Swaminathan uint32_t cerbm:1; /* Configure Enhanced Receive */ 223882527734SSukumar Swaminathan /* Buffer Management */ 223982527734SSukumar Swaminathan uint32_t cmx:1; /* Configure Max XRIs */ 224082527734SSukumar Swaminathan uint32_t cmr:1; /* Configure Max RPIs */ 224182527734SSukumar Swaminathan #endif 224282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 224382527734SSukumar Swaminathan uint32_t cmr:1; /* Configure Max RPIs */ 224482527734SSukumar Swaminathan uint32_t cmx:1; /* Configure Max XRIs */ 224582527734SSukumar Swaminathan uint32_t cerbm:1; /* Configure Enhanced Receive */ 224682527734SSukumar Swaminathan /* Buffer Management */ 224782527734SSukumar Swaminathan uint32_t cinb:1; /* Enable Interrupt Notification */ 224882527734SSukumar Swaminathan /* Block */ 224982527734SSukumar Swaminathan uint32_t chbs:1; /* Cofigure Host Backing store */ 225082527734SSukumar Swaminathan uint32_t csah:1; /* Configure Synchronous Abort */ 225182527734SSukumar Swaminathan /* Handling */ 225282527734SSukumar Swaminathan uint32_t ccrp:1; /* Config Command Ring Polling */ 225382527734SSukumar Swaminathan uint32_t cmv:1; /* Configure Max VPIs */ 225482527734SSukumar Swaminathan uint32_t rsvd1:24; 225582527734SSukumar Swaminathan #endif 225682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 2257*8f23e9faSHans Rosenfeld uint32_t rsvd2:19; /* Reserved */ 2258*8f23e9faSHans Rosenfeld uint32_t gdss:1; /* Configure Data Security SLI */ 2259*8f23e9faSHans Rosenfeld uint32_t rsvd3:3; /* Reserved */ 2260*8f23e9faSHans Rosenfeld uint32_t gbg:1; /* Grant BlockGuard */ 226182527734SSukumar Swaminathan uint32_t gmv:1; /* Grant Max VPIs */ 226282527734SSukumar Swaminathan uint32_t gcrp:1; /* Grant Command Ring Polling */ 226382527734SSukumar Swaminathan uint32_t gsah:1; /* Grant Synchronous Abort Handling */ 226482527734SSukumar Swaminathan uint32_t ghbs:1; /* Grant Host Backing Store */ 226582527734SSukumar Swaminathan uint32_t ginb:1; /* Grant Interrupt Notification Block */ 226682527734SSukumar Swaminathan uint32_t gerbm:1; /* Grant ERBM Request */ 226782527734SSukumar Swaminathan uint32_t gmx:1; /* Grant Max XRIs */ 226882527734SSukumar Swaminathan uint32_t gmr:1; /* Grant Max RPIs */ 226982527734SSukumar Swaminathan #endif 227082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 227182527734SSukumar Swaminathan uint32_t gmr:1; /* Grant Max RPIs */ 227282527734SSukumar Swaminathan uint32_t gmx:1; /* Grant Max XRIs */ 227382527734SSukumar Swaminathan uint32_t gerbm:1; /* Grant ERBM Request */ 227482527734SSukumar Swaminathan uint32_t ginb:1; /* Grant Interrupt Notification Block */ 227582527734SSukumar Swaminathan uint32_t ghbs:1; /* Grant Host Backing Store */ 227682527734SSukumar Swaminathan uint32_t gsah:1; /* Grant Synchronous Abort Handling */ 227782527734SSukumar Swaminathan uint32_t gcrp:1; /* Grant Command Ring Polling */ 227882527734SSukumar Swaminathan uint32_t gmv:1; /* Grant Max VPIs */ 2279*8f23e9faSHans Rosenfeld uint32_t gbg:1; /* Grant BlockGuard */ 2280*8f23e9faSHans Rosenfeld uint32_t rsvd3:3; /* Reserved */ 2281*8f23e9faSHans Rosenfeld uint32_t gdss:1; /* Configure Data Security SLI */ 2282*8f23e9faSHans Rosenfeld uint32_t rsvd2:19; /* Reserved */ 228382527734SSukumar Swaminathan #endif 228482527734SSukumar Swaminathan 228582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 228682527734SSukumar Swaminathan uint32_t max_rpi:16; /* Max RPIs Port should configure */ 228782527734SSukumar Swaminathan uint32_t max_xri:16; /* Max XRIs Port should configure */ 228882527734SSukumar Swaminathan #endif 228982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 229082527734SSukumar Swaminathan uint32_t max_xri:16; /* Max XRIs Port should configure */ 229182527734SSukumar Swaminathan uint32_t max_rpi:16; /* Max RPIs Port should configure */ 229282527734SSukumar Swaminathan #endif 229382527734SSukumar Swaminathan 229482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 229582527734SSukumar Swaminathan uint32_t max_hbq:16; /* Max HBQs Host expect to configure */ 2296*8f23e9faSHans Rosenfeld uint32_t rsvd4:16; /* Max HBQs Host expect to configure */ 229782527734SSukumar Swaminathan #endif 229882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 2299*8f23e9faSHans Rosenfeld uint32_t rsvd4:16; /* Max HBQs Host expect to configure */ 230082527734SSukumar Swaminathan uint32_t max_hbq:16; /* Max HBQs Host expect to configure */ 230182527734SSukumar Swaminathan #endif 230282527734SSukumar Swaminathan 2303*8f23e9faSHans Rosenfeld uint32_t rsvd5; /* Reserved */ 230482527734SSukumar Swaminathan 230582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 2306*8f23e9faSHans Rosenfeld uint32_t rsvd6:16; /* Reserved */ 230782527734SSukumar Swaminathan uint32_t vpi_max:16; /* Max number of virt N-Ports */ 230882527734SSukumar Swaminathan #endif 230982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 231082527734SSukumar Swaminathan uint32_t vpi_max:16; /* Max number of virt N-Ports */ 2311*8f23e9faSHans Rosenfeld uint32_t rsvd6:16; /* Reserved */ 231282527734SSukumar Swaminathan #endif 231382527734SSukumar Swaminathan } CONFIG_PORT_VAR; 231482527734SSukumar Swaminathan 231582527734SSukumar Swaminathan /* Structure for MB Command REQUEST_FEATURES (0x9D) */ 231682527734SSukumar Swaminathan /* Good for SLI4 only */ 231782527734SSukumar Swaminathan 231882527734SSukumar Swaminathan typedef struct 231982527734SSukumar Swaminathan { 232082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 232182527734SSukumar Swaminathan uint32_t rsvd1:31; 232282527734SSukumar Swaminathan uint32_t QueryMode:1; 232382527734SSukumar Swaminathan #endif 232482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 232582527734SSukumar Swaminathan uint32_t QueryMode:1; 232682527734SSukumar Swaminathan uint32_t rsvd1:31; 232782527734SSukumar Swaminathan #endif 232882527734SSukumar Swaminathan 232982527734SSukumar Swaminathan uint32_t featuresRequested; 233082527734SSukumar Swaminathan uint32_t featuresEnabled; 233182527734SSukumar Swaminathan 233282527734SSukumar Swaminathan } REQUEST_FEATURES_VAR; 233382527734SSukumar Swaminathan 2334*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_INHIBIT_AUTO_ABTS 0x0001 2335*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_NPIV 0x0002 2336*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_DIF 0x0004 2337*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_VIRTUAL_FABRICS 0x0008 2338*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_FCP_INITIATOR 0x0010 2339*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_FCP_TARGET 0x0020 2340*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_FCP_COMBO 0x0040 2341*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_RSVD1 0x0080 2342*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_RQD 0x0100 2343*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_INHIBIT_AUTO_ABTS_R 0x0200 2344*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_HIGH_LOGIN_MODE 0x0400 2345*8f23e9faSHans Rosenfeld #define SLI4_FEATURE_PERF_HINT 0x0800 234682527734SSukumar Swaminathan 234782527734SSukumar Swaminathan 234882527734SSukumar Swaminathan /* SLI-2 Port Control Block */ 234982527734SSukumar Swaminathan 235082527734SSukumar Swaminathan /* SLIM POINTER */ 235182527734SSukumar Swaminathan #define SLIMOFF 0x30 /* WORD */ 235282527734SSukumar Swaminathan 235382527734SSukumar Swaminathan typedef struct _SLI2_RDSC 235482527734SSukumar Swaminathan { 235582527734SSukumar Swaminathan uint32_t cmdEntries; 235682527734SSukumar Swaminathan uint32_t cmdAddrLow; 235782527734SSukumar Swaminathan uint32_t cmdAddrHigh; 235882527734SSukumar Swaminathan 235982527734SSukumar Swaminathan uint32_t rspEntries; 236082527734SSukumar Swaminathan uint32_t rspAddrLow; 236182527734SSukumar Swaminathan uint32_t rspAddrHigh; 236282527734SSukumar Swaminathan } SLI2_RDSC; 236382527734SSukumar Swaminathan 236482527734SSukumar Swaminathan typedef struct _PCB 236582527734SSukumar Swaminathan { 236682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 236782527734SSukumar Swaminathan uint32_t type:8; 236882527734SSukumar Swaminathan #define TYPE_NATIVE_SLI2 0x01; 236982527734SSukumar Swaminathan uint32_t feature:8; 237082527734SSukumar Swaminathan #define FEATURE_INITIAL_SLI2 0x01; 237182527734SSukumar Swaminathan uint32_t rsvd:12; 237282527734SSukumar Swaminathan uint32_t maxRing:4; 237382527734SSukumar Swaminathan #endif 237482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 237582527734SSukumar Swaminathan uint32_t maxRing:4; 237682527734SSukumar Swaminathan uint32_t rsvd:12; 237782527734SSukumar Swaminathan uint32_t feature:8; 237882527734SSukumar Swaminathan #define FEATURE_INITIAL_SLI2 0x01; 237982527734SSukumar Swaminathan uint32_t type:8; 238082527734SSukumar Swaminathan #define TYPE_NATIVE_SLI2 0x01; 238182527734SSukumar Swaminathan #endif 238282527734SSukumar Swaminathan 238382527734SSukumar Swaminathan uint32_t mailBoxSize; 238482527734SSukumar Swaminathan uint32_t mbAddrLow; 238582527734SSukumar Swaminathan uint32_t mbAddrHigh; 238682527734SSukumar Swaminathan 238782527734SSukumar Swaminathan uint32_t hgpAddrLow; 238882527734SSukumar Swaminathan uint32_t hgpAddrHigh; 238982527734SSukumar Swaminathan 239082527734SSukumar Swaminathan uint32_t pgpAddrLow; 239182527734SSukumar Swaminathan uint32_t pgpAddrHigh; 239282527734SSukumar Swaminathan SLI2_RDSC rdsc[MAX_RINGS_AVAILABLE]; 239382527734SSukumar Swaminathan } PCB; 239482527734SSukumar Swaminathan 239582527734SSukumar Swaminathan /* NEW_FEATURE */ 239682527734SSukumar Swaminathan typedef struct 239782527734SSukumar Swaminathan { 239882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 239982527734SSukumar Swaminathan uint32_t rsvd0:27; 240082527734SSukumar Swaminathan uint32_t discardFarp:1; 240182527734SSukumar Swaminathan uint32_t IPEnable:1; 240282527734SSukumar Swaminathan uint32_t nodeName:1; 240382527734SSukumar Swaminathan uint32_t portName:1; 240482527734SSukumar Swaminathan uint32_t filterEnable:1; 240582527734SSukumar Swaminathan #endif 240682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 240782527734SSukumar Swaminathan uint32_t filterEnable:1; 240882527734SSukumar Swaminathan uint32_t portName:1; 240982527734SSukumar Swaminathan uint32_t nodeName:1; 241082527734SSukumar Swaminathan uint32_t IPEnable:1; 241182527734SSukumar Swaminathan uint32_t discardFarp:1; 241282527734SSukumar Swaminathan uint32_t rsvd:27; 241382527734SSukumar Swaminathan #endif 241482527734SSukumar Swaminathan NAME_TYPE portname; 241582527734SSukumar Swaminathan NAME_TYPE nodename; 241682527734SSukumar Swaminathan uint32_t rsvd1; 241782527734SSukumar Swaminathan uint32_t rsvd2; 241882527734SSukumar Swaminathan uint32_t rsvd3; 241982527734SSukumar Swaminathan uint32_t IPAddress; 242082527734SSukumar Swaminathan } CONFIG_FARP_VAR; 242182527734SSukumar Swaminathan 242282527734SSukumar Swaminathan 242382527734SSukumar Swaminathan /* NEW_FEATURE */ 242482527734SSukumar Swaminathan typedef struct 242582527734SSukumar Swaminathan { 242682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 242782527734SSukumar Swaminathan uint32_t defaultMessageNumber:16; 242882527734SSukumar Swaminathan uint32_t rsvd1:3; 242982527734SSukumar Swaminathan uint32_t nid:5; 243082527734SSukumar Swaminathan uint32_t rsvd2:5; 243182527734SSukumar Swaminathan uint32_t defaultPresent:1; 243282527734SSukumar Swaminathan uint32_t addAssociations:1; 243382527734SSukumar Swaminathan uint32_t reportAssociations:1; 243482527734SSukumar Swaminathan #endif 243582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 243682527734SSukumar Swaminathan uint32_t reportAssociations:1; 243782527734SSukumar Swaminathan uint32_t addAssociations:1; 243882527734SSukumar Swaminathan uint32_t defaultPresent:1; 243982527734SSukumar Swaminathan uint32_t rsvd2:5; 244082527734SSukumar Swaminathan uint32_t nid:5; 244182527734SSukumar Swaminathan uint32_t rsvd1:3; 244282527734SSukumar Swaminathan uint32_t defaultMessageNumber:16; 244382527734SSukumar Swaminathan #endif 244482527734SSukumar Swaminathan uint32_t attConditions; 244582527734SSukumar Swaminathan uint8_t attentionId[16]; 244682527734SSukumar Swaminathan uint16_t messageNumberByHA[32]; 244782527734SSukumar Swaminathan uint16_t messageNumberByID[16]; 244882527734SSukumar Swaminathan uint32_t rsvd3; 244982527734SSukumar Swaminathan } CONFIG_MSI_VAR; 245082527734SSukumar Swaminathan 245182527734SSukumar Swaminathan 245282527734SSukumar Swaminathan /* NEW_FEATURE */ 245382527734SSukumar Swaminathan typedef struct 245482527734SSukumar Swaminathan { 245582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 245682527734SSukumar Swaminathan uint32_t defaultMessageNumber:8; 245782527734SSukumar Swaminathan uint32_t rsvd1:11; 245882527734SSukumar Swaminathan uint32_t nid:5; 245982527734SSukumar Swaminathan uint32_t rsvd2:5; 246082527734SSukumar Swaminathan uint32_t defaultPresent:1; 246182527734SSukumar Swaminathan uint32_t addAssociations:1; 246282527734SSukumar Swaminathan uint32_t reportAssociations:1; 246382527734SSukumar Swaminathan #endif 246482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 246582527734SSukumar Swaminathan uint32_t reportAssociations:1; 246682527734SSukumar Swaminathan uint32_t addAssociations:1; 246782527734SSukumar Swaminathan uint32_t defaultPresent:1; 246882527734SSukumar Swaminathan uint32_t rsvd2:5; 246982527734SSukumar Swaminathan uint32_t nid:5; 247082527734SSukumar Swaminathan uint32_t rsvd1:11; 247182527734SSukumar Swaminathan uint32_t defaultMessageNumber:8; 247282527734SSukumar Swaminathan #endif 247382527734SSukumar Swaminathan uint32_t attConditions1; 247482527734SSukumar Swaminathan uint32_t attConditions2; 247582527734SSukumar Swaminathan uint8_t attentionId[16]; 247682527734SSukumar Swaminathan uint8_t messageNumberByHA[64]; 247782527734SSukumar Swaminathan uint8_t messageNumberByID[16]; 247882527734SSukumar Swaminathan uint32_t autoClearByHA1; 247982527734SSukumar Swaminathan uint32_t autoClearByHA2; 248082527734SSukumar Swaminathan uint32_t autoClearByID; 248182527734SSukumar Swaminathan uint32_t resv3; 248282527734SSukumar Swaminathan } CONFIG_MSIX_VAR; 248382527734SSukumar Swaminathan 248482527734SSukumar Swaminathan 248582527734SSukumar Swaminathan /* Union of all Mailbox Command types */ 248682527734SSukumar Swaminathan 248782527734SSukumar Swaminathan typedef union 248882527734SSukumar Swaminathan { 248982527734SSukumar Swaminathan uint32_t varWords[31]; 249082527734SSukumar Swaminathan LOAD_SM_VAR varLdSM; /* cmd = 1 (LOAD_SM) */ 249182527734SSukumar Swaminathan READ_NV_VAR varRDnvp; /* cmd = 2 (READ_NVPARMS) */ 249282527734SSukumar Swaminathan WRITE_NV_VAR varWTnvp; /* cmd = 3 (WRITE_NVPARMS) */ 249382527734SSukumar Swaminathan BIU_DIAG_VAR varBIUdiag; /* cmd = 4 (RUN_BIU_DIAG) */ 249482527734SSukumar Swaminathan INIT_LINK_VAR varInitLnk; /* cmd = 5 (INIT_LINK) */ 249582527734SSukumar Swaminathan DOWN_LINK_VAR varDwnLnk; /* cmd = 6 (DOWN_LINK) */ 249682527734SSukumar Swaminathan CONFIG_LINK varCfgLnk; /* cmd = 7 (CONFIG_LINK) */ 249782527734SSukumar Swaminathan PART_SLIM_VAR varSlim; /* cmd = 8 (PART_SLIM) */ 249882527734SSukumar Swaminathan CONFIG_RING_VAR varCfgRing; /* cmd = 9 (CONFIG_RING) */ 249982527734SSukumar Swaminathan RESET_RING_VAR varRstRing; /* cmd = 10 (RESET_RING) */ 250082527734SSukumar Swaminathan READ_CONFIG_VAR varRdConfig; /* cmd = 11 (READ_CONFIG) */ 250182527734SSukumar Swaminathan READ_RCONF_VAR varRdRConfig; /* cmd = 12 (READ_RCONFIG) */ 250282527734SSukumar Swaminathan READ_SPARM_VAR varRdSparm; /* cmd = 13 (READ_SPARM(64)) */ 250382527734SSukumar Swaminathan READ_STATUS_VAR varRdStatus; /* cmd = 14 (READ_STATUS) */ 250482527734SSukumar Swaminathan READ_RPI_VAR varRdRPI; /* cmd = 15 (READ_RPI(64)) */ 250582527734SSukumar Swaminathan READ_XRI_VAR varRdXRI; /* cmd = 16 (READ_XRI) */ 250682527734SSukumar Swaminathan READ_REV_VAR varRdRev; /* cmd = 17 (READ_REV) */ 250782527734SSukumar Swaminathan READ_LNK_VAR varRdLnk; /* cmd = 18 (READ_LNK_STAT) */ 250882527734SSukumar Swaminathan REG_LOGIN_VAR varRegLogin; /* cmd = 19 (REG_LOGIN(64)) */ 250982527734SSukumar Swaminathan UNREG_LOGIN_VAR varUnregLogin; /* cmd = 20 (UNREG_LOGIN) */ 251082527734SSukumar Swaminathan READ_LA_VAR varReadLA; /* cmd = 21 (READ_LA(64)) */ 251182527734SSukumar Swaminathan CLEAR_LA_VAR varClearLA; /* cmd = 22 (CLEAR_LA) */ 251282527734SSukumar Swaminathan DUMP_VAR varDmp; /* Warm Start DUMP mbx cmd */ 251382527734SSukumar Swaminathan UPDATE_CFG_VAR varUpdateCfg; /* cmd = 0x1b Warm Start */ 251482527734SSukumar Swaminathan /* UPDATE_CFG cmd */ 251582527734SSukumar Swaminathan DEL_LD_ENTRY_VAR varDelLdEntry; /* cmd = 0x1d (DEL_LD_ENTRY) */ 251682527734SSukumar Swaminathan UNREG_D_ID_VAR varUnregDID; /* cmd = 0x23 (UNREG_D_ID) */ 251782527734SSukumar Swaminathan CONFIG_FARP_VAR varCfgFarp; /* cmd = 0x25 (CONFIG_FARP) */ 251882527734SSukumar Swaminathan CONFIG_MSI_VAR varCfgMSI; /* cmd = 0x90 (CONFIG_MSI) */ 251982527734SSukumar Swaminathan CONFIG_MSIX_VAR varCfgMSIX; /* cmd = 0x30 (CONFIG_MSIX) */ 252082527734SSukumar Swaminathan CONFIG_HBQ_VAR varCfgHbq; /* cmd = 0x7C (CONFIG_HBQ) */ 252182527734SSukumar Swaminathan LOAD_AREA_VAR varLdArea; /* cmd = 0x81 (LOAD_AREA) */ 252282527734SSukumar Swaminathan CONFIG_PORT_VAR varCfgPort; /* cmd = 0x88 (CONFIG_PORT) */ 252382527734SSukumar Swaminathan LOAD_EXP_ROM_VAR varLdExpRom; /* cmd = 0x9C (LOAD_XP_ROM) */ 252482527734SSukumar Swaminathan REG_VPI_VAR varRegVpi; /* cmd = 0x96 (REG_VPI) */ 252582527734SSukumar Swaminathan UNREG_VPI_VAR varUnregVpi; /* cmd = 0x97 (UNREG_VPI) */ 252682527734SSukumar Swaminathan READ_EVT_LOG_VAR varRdEvtLog; /* cmd = 0x38 (READ_EVT_LOG) */ 252782527734SSukumar Swaminathan LOG_STATUS_VAR varLogStat; /* cmd = 0x37 */ 252882527734SSukumar Swaminathan 252982527734SSukumar Swaminathan } MAILVARIANTS; 253082527734SSukumar Swaminathan 253182527734SSukumar Swaminathan #define MAILBOX_CMD_BSIZE 128 253282527734SSukumar Swaminathan #define MAILBOX_CMD_WSIZE 32 253382527734SSukumar Swaminathan 253482527734SSukumar Swaminathan /* 253582527734SSukumar Swaminathan * SLI-2 specific structures 253682527734SSukumar Swaminathan */ 253782527734SSukumar Swaminathan 253882527734SSukumar Swaminathan typedef struct _SLI1_DESC 253982527734SSukumar Swaminathan { 254082527734SSukumar Swaminathan emlxs_rings_t mbxCring[4]; 254182527734SSukumar Swaminathan uint32_t mbxUnused[24]; 254282527734SSukumar Swaminathan } SLI1_DESC; /* 128 bytes */ 254382527734SSukumar Swaminathan 254482527734SSukumar Swaminathan typedef struct 254582527734SSukumar Swaminathan { 254682527734SSukumar Swaminathan uint32_t cmdPutInx; 254782527734SSukumar Swaminathan uint32_t rspGetInx; 254882527734SSukumar Swaminathan } HGP; 254982527734SSukumar Swaminathan 255082527734SSukumar Swaminathan typedef struct 255182527734SSukumar Swaminathan { 255282527734SSukumar Swaminathan uint32_t cmdGetInx; 255382527734SSukumar Swaminathan uint32_t rspPutInx; 255482527734SSukumar Swaminathan } PGP; 255582527734SSukumar Swaminathan 255682527734SSukumar Swaminathan typedef struct _SLI2_DESC 255782527734SSukumar Swaminathan { 255882527734SSukumar Swaminathan HGP host[4]; 255982527734SSukumar Swaminathan PGP port[4]; 256082527734SSukumar Swaminathan uint32_t HBQ_PortGetIdx[16]; 256182527734SSukumar Swaminathan } SLI2_DESC; /* 128 bytes */ 256282527734SSukumar Swaminathan 256382527734SSukumar Swaminathan typedef union 256482527734SSukumar Swaminathan { 256582527734SSukumar Swaminathan SLI1_DESC s1; /* 32 words, 128 bytes */ 256682527734SSukumar Swaminathan SLI2_DESC s2; /* 32 words, 128 bytes */ 256782527734SSukumar Swaminathan } SLI_VAR; 256882527734SSukumar Swaminathan 256982527734SSukumar Swaminathan typedef volatile struct 257082527734SSukumar Swaminathan { 257182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 257282527734SSukumar Swaminathan uint16_t mbxStatus; 257382527734SSukumar Swaminathan uint8_t mbxCommand; 257482527734SSukumar Swaminathan uint8_t mbxReserved:6; 257582527734SSukumar Swaminathan uint8_t mbxHc:1; 257682527734SSukumar Swaminathan uint8_t mbxOwner:1; /* Low order bit first word */ 257782527734SSukumar Swaminathan #endif 257882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 257982527734SSukumar Swaminathan uint8_t mbxOwner:1; /* Low order bit first word */ 258082527734SSukumar Swaminathan uint8_t mbxHc:1; 258182527734SSukumar Swaminathan uint8_t mbxReserved:6; 258282527734SSukumar Swaminathan uint8_t mbxCommand; 258382527734SSukumar Swaminathan uint16_t mbxStatus; 258482527734SSukumar Swaminathan #endif 258582527734SSukumar Swaminathan MAILVARIANTS un; /* 124 bytes */ 258682527734SSukumar Swaminathan SLI_VAR us; /* 128 bytes */ 258782527734SSukumar Swaminathan } MAILBOX; /* 256 bytes */ 258882527734SSukumar Swaminathan 258982527734SSukumar Swaminathan 259082527734SSukumar Swaminathan 259182527734SSukumar Swaminathan /* SLI4 IOCTL Mailbox */ 259282527734SSukumar Swaminathan /* ALL SLI4 specific mbox commands have a standard request /response header */ 259382527734SSukumar Swaminathan /* Word 0 is just like SLI 3 */ 259482527734SSukumar Swaminathan 259582527734SSukumar Swaminathan typedef struct mbox_req_hdr 259682527734SSukumar Swaminathan { 259782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 259882527734SSukumar Swaminathan uint32_t domain:8; /* word 6 */ 259982527734SSukumar Swaminathan uint32_t port:8; 260082527734SSukumar Swaminathan uint32_t subsystem:8; 260182527734SSukumar Swaminathan uint32_t opcode:8; 2602*8f23e9faSHans Rosenfeld 2603*8f23e9faSHans Rosenfeld uint32_t timeout; /* word 7 */ 2604*8f23e9faSHans Rosenfeld 2605*8f23e9faSHans Rosenfeld uint32_t req_length; /* word 8 */ 2606*8f23e9faSHans Rosenfeld 2607*8f23e9faSHans Rosenfeld uint32_t reserved1:24; /* word 9 */ 2608*8f23e9faSHans Rosenfeld uint32_t version:8; /* word 9 */ 260982527734SSukumar Swaminathan #endif 261082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 261182527734SSukumar Swaminathan uint32_t opcode:8; 261282527734SSukumar Swaminathan uint32_t subsystem:8; 261382527734SSukumar Swaminathan uint32_t port:8; 261482527734SSukumar Swaminathan uint32_t domain:8; /* word 6 */ 2615*8f23e9faSHans Rosenfeld 261682527734SSukumar Swaminathan uint32_t timeout; /* word 7 */ 2617*8f23e9faSHans Rosenfeld 261882527734SSukumar Swaminathan uint32_t req_length; /* word 8 */ 2619*8f23e9faSHans Rosenfeld 2620*8f23e9faSHans Rosenfeld uint32_t version:8; /* word 9 */ 2621*8f23e9faSHans Rosenfeld uint32_t reserved1:24; /* word 9 */ 2622*8f23e9faSHans Rosenfeld #endif 2623*8f23e9faSHans Rosenfeld 262482527734SSukumar Swaminathan } mbox_req_hdr_t; 262582527734SSukumar Swaminathan 2626*8f23e9faSHans Rosenfeld 2627*8f23e9faSHans Rosenfeld typedef struct mbox_req_hdr2 2628*8f23e9faSHans Rosenfeld { 2629*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 2630*8f23e9faSHans Rosenfeld uint32_t vf_number:16; /* word 6 */ 2631*8f23e9faSHans Rosenfeld uint32_t subsystem:8; 2632*8f23e9faSHans Rosenfeld uint32_t opcode:8; 2633*8f23e9faSHans Rosenfeld 2634*8f23e9faSHans Rosenfeld uint32_t timeout; /* word 7 */ 2635*8f23e9faSHans Rosenfeld 2636*8f23e9faSHans Rosenfeld uint32_t req_length; /* word 8 */ 2637*8f23e9faSHans Rosenfeld 2638*8f23e9faSHans Rosenfeld uint32_t vh_number:6; /* word 9 */ 2639*8f23e9faSHans Rosenfeld uint32_t pf_number:10; 2640*8f23e9faSHans Rosenfeld uint32_t reserved1:8; 2641*8f23e9faSHans Rosenfeld uint32_t version:8; 2642*8f23e9faSHans Rosenfeld #endif 2643*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 2644*8f23e9faSHans Rosenfeld uint32_t opcode:8; 2645*8f23e9faSHans Rosenfeld uint32_t subsystem:8; 2646*8f23e9faSHans Rosenfeld uint32_t vf_number:16; /* word 6 */ 2647*8f23e9faSHans Rosenfeld 2648*8f23e9faSHans Rosenfeld uint32_t timeout; /* word 7 */ 2649*8f23e9faSHans Rosenfeld 2650*8f23e9faSHans Rosenfeld uint32_t req_length; /* word 8 */ 2651*8f23e9faSHans Rosenfeld 2652*8f23e9faSHans Rosenfeld uint32_t version:8; 2653*8f23e9faSHans Rosenfeld uint32_t reserved1:8; 2654*8f23e9faSHans Rosenfeld uint32_t pf_number:10; 2655*8f23e9faSHans Rosenfeld uint32_t vh_number:6; /* word 9 */ 2656*8f23e9faSHans Rosenfeld #endif 2657*8f23e9faSHans Rosenfeld 2658*8f23e9faSHans Rosenfeld } mbox_req_hdr2_t; 2659*8f23e9faSHans Rosenfeld 266082527734SSukumar Swaminathan typedef struct mbox_rsp_hdr 266182527734SSukumar Swaminathan { 266282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 266382527734SSukumar Swaminathan uint32_t domain:8; /* word 6 */ 266482527734SSukumar Swaminathan uint32_t reserved1:8; 266582527734SSukumar Swaminathan uint32_t subsystem:8; 266682527734SSukumar Swaminathan uint32_t opcode:8; 266782527734SSukumar Swaminathan 266882527734SSukumar Swaminathan uint32_t reserved2:16; /* word 7 */ 266982527734SSukumar Swaminathan uint32_t extra_status:8; 267082527734SSukumar Swaminathan uint32_t status:8; 267182527734SSukumar Swaminathan #endif 267282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 267382527734SSukumar Swaminathan uint32_t opcode:8; 267482527734SSukumar Swaminathan uint32_t subsystem:8; 267582527734SSukumar Swaminathan uint32_t reserved1:8; 267682527734SSukumar Swaminathan uint32_t domain:8; /* word 6 */ 267782527734SSukumar Swaminathan 267882527734SSukumar Swaminathan uint32_t status:8; 267982527734SSukumar Swaminathan uint32_t extra_status:8; 268082527734SSukumar Swaminathan uint32_t reserved2:16; /* word 7 */ 268182527734SSukumar Swaminathan #endif 268282527734SSukumar Swaminathan uint32_t rsp_length; /* word 8 */ 268382527734SSukumar Swaminathan uint32_t allocated_length; /* word 9 */ 268482527734SSukumar Swaminathan } mbox_rsp_hdr_t; 268582527734SSukumar Swaminathan 2686a9800bebSGarrett D'Amore #define MBX_RSP_STATUS_SUCCESS 0x00 2687a9800bebSGarrett D'Amore #define MBX_RSP_STATUS_FAILED 0x01 2688a9800bebSGarrett D'Amore #define MBX_RSP_STATUS_ILLEGAL_REQ 0x02 2689a9800bebSGarrett D'Amore #define MBX_RSP_STATUS_ILLEGAL_FIELD 0x03 2690a9800bebSGarrett D'Amore #define MBX_RSP_STATUS_FCF_IN_USE 0x3A 2691a9800bebSGarrett D'Amore #define MBX_RSP_STATUS_NO_FCF 0x43 2692a9800bebSGarrett D'Amore 2693*8f23e9faSHans Rosenfeld #define MGMT_ADDI_STATUS_INCOMPATIBLE 0xA2 2694*8f23e9faSHans Rosenfeld 269582527734SSukumar Swaminathan typedef struct be_req_hdr 269682527734SSukumar Swaminathan { 269782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 269882527734SSukumar Swaminathan uint32_t special:8; /* word 1 */ 269982527734SSukumar Swaminathan uint32_t reserved2:16; /* word 1 */ 270082527734SSukumar Swaminathan uint32_t sge_cnt:5; /* word 1 */ 270182527734SSukumar Swaminathan uint32_t reserved1:2; /* word 1 */ 270282527734SSukumar Swaminathan uint32_t embedded:1; /* word 1 */ 270382527734SSukumar Swaminathan #endif 270482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 270582527734SSukumar Swaminathan uint32_t embedded:1; /* word 1 */ 270682527734SSukumar Swaminathan uint32_t reserved1:2; /* word 1 */ 270782527734SSukumar Swaminathan uint32_t sge_cnt:5; /* word 1 */ 270882527734SSukumar Swaminathan uint32_t reserved2:16; /* word 1 */ 270982527734SSukumar Swaminathan uint32_t special:8; /* word 1 */ 271082527734SSukumar Swaminathan #endif 271182527734SSukumar Swaminathan uint32_t payload_length; /* word 2 */ 271282527734SSukumar Swaminathan uint32_t tag_low; /* word 3 */ 271382527734SSukumar Swaminathan uint32_t tag_hi; /* word 4 */ 271482527734SSukumar Swaminathan uint32_t reserved3; /* word 5 */ 271582527734SSukumar Swaminathan union 271682527734SSukumar Swaminathan { 271782527734SSukumar Swaminathan mbox_req_hdr_t hdr_req; 2718*8f23e9faSHans Rosenfeld mbox_req_hdr2_t hdr_req2; 271982527734SSukumar Swaminathan mbox_rsp_hdr_t hdr_rsp; 272082527734SSukumar Swaminathan } un_hdr; 272182527734SSukumar Swaminathan } be_req_hdr_t; 272282527734SSukumar Swaminathan 272382527734SSukumar Swaminathan #define EMLXS_MAX_NONEMBED_SIZE (1024 * 64) 272482527734SSukumar Swaminathan 272582527734SSukumar Swaminathan /* SLI_CONFIG Mailbox commands */ 272682527734SSukumar Swaminathan 272782527734SSukumar Swaminathan #define IOCTL_SUBSYSTEM_COMMON 0x01 272882527734SSukumar Swaminathan #define IOCTL_SUBSYSTEM_FCOE 0x0C 272982527734SSukumar Swaminathan #define IOCTL_SUBSYSTEM_DCBX 0x10 273082527734SSukumar Swaminathan 273182527734SSukumar Swaminathan #define COMMON_OPCODE_READ_FLASHROM 0x06 273282527734SSukumar Swaminathan #define COMMON_OPCODE_WRITE_FLASHROM 0x07 273382527734SSukumar Swaminathan #define COMMON_OPCODE_CQ_CREATE 0x0C 273482527734SSukumar Swaminathan #define COMMON_OPCODE_EQ_CREATE 0x0D 273582527734SSukumar Swaminathan #define COMMON_OPCODE_MQ_CREATE 0x15 273682527734SSukumar Swaminathan #define COMMON_OPCODE_GET_CNTL_ATTRIB 0x20 273782527734SSukumar Swaminathan #define COMMON_OPCODE_NOP 0x21 273882527734SSukumar Swaminathan #define COMMON_OPCODE_QUERY_FIRMWARE_CONFIG 0x3A 273982527734SSukumar Swaminathan #define COMMON_OPCODE_RESET 0x3D 2740*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SET_PHYSICAL_LINK_CFG_V1 0x3E 2741*8f23e9faSHans Rosenfeld 2742*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_BOOT_CFG 0x42 2743*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SET_BOOT_CFG 0x43 274482527734SSukumar Swaminathan #define COMMON_OPCODE_MANAGE_FAT 0x44 2745*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_PHYSICAL_LINK_CFG_V1 0x47 2746*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_PORT_NAME 0x4D 2747*8f23e9faSHans Rosenfeld 2748*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_MQ_CREATE_EXT 0x5A 2749*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_VPD_DATA 0x5B 2750*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_PHY_DETAILS 0x66 2751*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SEND_ACTIVATION 0x73 2752*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_RESET_LICENSES 0x74 2753*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_CNTL_ADDL_ATTRIB 0x79 2754*8f23e9faSHans Rosenfeld 2755*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_EXTENTS_INFO 0x9A 2756*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_EXTENTS 0x9B 2757*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_ALLOC_EXTENTS 0x9C 2758*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_DEALLOC_EXTENTS 0x9D 2759*8f23e9faSHans Rosenfeld 2760*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_PROFILE_CAPS 0xA1 2761*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_MR_PROFILE_CAPS 0xA2 2762*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SET_MR_PROFILE_CAPS 0xA3 2763*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_PROFILE_CFG 0xA4 2764*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SET_PROFILE_CFG 0xA5 2765*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_PROFILE_LIST 0xA6 2766*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_ACTIVE_PROFILE 0xA7 2767*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SET_ACTIVE_PROFILE 0xA8 2768*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_SET_FACTORY_PROFILE_CFG 0xA9 2769*8f23e9faSHans Rosenfeld 2770*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_READ_OBJ 0xAB 2771*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_WRITE_OBJ 0xAC 2772*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_READ_OBJ_LIST 0xAD 2773*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_DELETE_OBJ 0xAE 2774*8f23e9faSHans Rosenfeld #define COMMON_OPCODE_GET_SLI4_PARAMS 0xB5 277582527734SSukumar Swaminathan 277682527734SSukumar Swaminathan #define FCOE_OPCODE_WQ_CREATE 0x01 277782527734SSukumar Swaminathan #define FCOE_OPCODE_CFG_POST_SGL_PAGES 0x03 277882527734SSukumar Swaminathan #define FCOE_OPCODE_RQ_CREATE 0x05 277982527734SSukumar Swaminathan #define FCOE_OPCODE_READ_FCF_TABLE 0x08 278082527734SSukumar Swaminathan #define FCOE_OPCODE_ADD_FCF_TABLE 0x09 2781a9800bebSGarrett D'Amore #define FCOE_OPCODE_DELETE_FCF_TABLE 0x0A 278282527734SSukumar Swaminathan #define FCOE_OPCODE_POST_HDR_TEMPLATES 0x0B 2783a9800bebSGarrett D'Amore #define FCOE_OPCODE_REDISCOVER_FCF_TABLE 0x10 2784*8f23e9faSHans Rosenfeld #define FCOE_OPCODE_SET_FCLINK_SETTINGS 0x21 278582527734SSukumar Swaminathan 278682527734SSukumar Swaminathan #define DCBX_OPCODE_GET_DCBX_MODE 0x04 278782527734SSukumar Swaminathan #define DCBX_OPCODE_SET_DCBX_MODE 0x05 278882527734SSukumar Swaminathan 278982527734SSukumar Swaminathan typedef struct 279082527734SSukumar Swaminathan { 279182527734SSukumar Swaminathan struct 279282527734SSukumar Swaminathan { 279382527734SSukumar Swaminathan uint32_t opcode; 279482527734SSukumar Swaminathan #define MGMT_FLASHROM_OPCODE_FLASH 1 279582527734SSukumar Swaminathan #define MGMT_FLASHROM_OPCODE_SAVE 2 279682527734SSukumar Swaminathan #define MGMT_FLASHROM_OPCODE_CLEAR 3 279782527734SSukumar Swaminathan #define MGMT_FLASHROM_OPCODE_REPORT 4 279882527734SSukumar Swaminathan #define MGMT_FLASHROM_OPCODE_INFO 5 279982527734SSukumar Swaminathan #define MGMT_FLASHROM_OPCODE_CRC 6 2800*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPCODE_OFFSET_FLASH 7 2801*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPCODE_OFFSET_SAVE 8 2802*8f23e9faSHans Rosenfeld #define MGMT_PHY_FLASHROM_OPCODE_FLASH 9 2803*8f23e9faSHans Rosenfeld #define MGMT_PHY_FLASHROM_OPCODE_SAVE 10 280482527734SSukumar Swaminathan 280582527734SSukumar Swaminathan uint32_t optype; 280682527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_ISCSI_FIRMWARE 0 280782527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_REDBOOT 1 280882527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_ISCSI_BIOS 2 280982527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_PXE_BIOS 3 281082527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_CTRLS 4 281182527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_CFG_IPSEC 5 281282527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_CFG_INI 6 281382527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_ROM_OFFSET 7 281482527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_FCOE_BIOS 8 281582527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_ISCSI_BACKUP 9 281682527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_FCOE_FIRMWARE 10 281782527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_FCOE_BACKUP 11 281882527734SSukumar Swaminathan #define MGMT_FLASHROM_OPTYPE_CTRLP 12 2819a9800bebSGarrett D'Amore #define MGMT_FLASHROM_OPTYPE_NCSI_FIRMWARE 13 2820*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPTYPE_CFG_NIC 14 2821*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPTYPE_CFG_DCBX 15 2822*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPTYPE_CFG_PXE_BIOS 16 2823*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPTYPE_CFG_ALL 17 2824*8f23e9faSHans Rosenfeld #define MGMT_FLASHROM_OPTYPE_PHY_FIRMWARE 0xff /* Driver defined */ 282582527734SSukumar Swaminathan 282682527734SSukumar Swaminathan uint32_t data_buffer_size; /* Align to 4KB */ 282782527734SSukumar Swaminathan uint32_t offset; 282882527734SSukumar Swaminathan uint32_t data_buffer; /* image starts here */ 282982527734SSukumar Swaminathan 283082527734SSukumar Swaminathan } params; 283182527734SSukumar Swaminathan 283282527734SSukumar Swaminathan } IOCTL_COMMON_FLASHROM; 283382527734SSukumar Swaminathan 283482527734SSukumar Swaminathan 2835*8f23e9faSHans Rosenfeld typedef struct 2836*8f23e9faSHans Rosenfeld { 2837*8f23e9faSHans Rosenfeld union 2838*8f23e9faSHans Rosenfeld { 2839*8f23e9faSHans Rosenfeld struct 2840*8f23e9faSHans Rosenfeld { 2841*8f23e9faSHans Rosenfeld uint32_t rsvd; 2842*8f23e9faSHans Rosenfeld } request; 2843*8f23e9faSHans Rosenfeld 2844*8f23e9faSHans Rosenfeld 2845*8f23e9faSHans Rosenfeld struct 2846*8f23e9faSHans Rosenfeld { 2847*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 2848*8f23e9faSHans Rosenfeld uint16_t interface_type; 2849*8f23e9faSHans Rosenfeld uint16_t phy_type; 2850*8f23e9faSHans Rosenfeld #endif 2851*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 2852*8f23e9faSHans Rosenfeld uint16_t phy_type; 2853*8f23e9faSHans Rosenfeld uint16_t interface_type; 2854*8f23e9faSHans Rosenfeld #endif 2855*8f23e9faSHans Rosenfeld 2856*8f23e9faSHans Rosenfeld /* phy_type */ 2857*8f23e9faSHans Rosenfeld #define PHY_XAUI 0x0 2858*8f23e9faSHans Rosenfeld #define PHY_AEL_2020 0x1 /* eluris/Netlogic */ 2859*8f23e9faSHans Rosenfeld #define PHY_LSI_BRCM1 0x2 /* Peak pre-production board */ 2860*8f23e9faSHans Rosenfeld #define PHY_LSI_BRCM2 0x3 /* Peak production board */ 2861*8f23e9faSHans Rosenfeld #define PHY_SOLARFLARE 0x4 /* Dell recommended */ 2862*8f23e9faSHans Rosenfeld #define PHY_AMCC_QT2025 0x5 /* AMCC PHY */ 2863*8f23e9faSHans Rosenfeld #define PHY_AMCC_QT2225 0x6 /* AMCC PHY */ 2864*8f23e9faSHans Rosenfeld #define PHY_BRCM_5931 0x7 /* Broadcom Phy used by HP LOM */ 2865*8f23e9faSHans Rosenfeld #define PHY_BE3_INTERNAL_10GB 0x8 /* Internal 10GbPHY in BE3 */ 2866*8f23e9faSHans Rosenfeld #define PHY_BE3_INTERNAL_1GB 0x9 /* Internal 1Gb PHY in BE3 */ 2867*8f23e9faSHans Rosenfeld #define PHY_TN_2022 0xa /* Teranetics dual port 65nm PHY */ 2868*8f23e9faSHans Rosenfeld #define PHY_MARVELL_88E1340 0xb /* Marvel 1G PHY */ 2869*8f23e9faSHans Rosenfeld #define PHY_MARVELL_88E1322 0xc /* Marvel 1G PHY */ 2870*8f23e9faSHans Rosenfeld #define PHY_TN_8022 0xd /* Teranetics dual port 40nm PHY */ 2871*8f23e9faSHans Rosenfeld #define PHY_TYPE_NOT_SUPPORTED 2872*8f23e9faSHans Rosenfeld 2873*8f23e9faSHans Rosenfeld /* interface_type */ 2874*8f23e9faSHans Rosenfeld #define CX4_10GB_TYPE 0x0 2875*8f23e9faSHans Rosenfeld #define XFP_10GB_TYPE 0x1 2876*8f23e9faSHans Rosenfeld #define SFP_1GB_TYPE 0x2 2877*8f23e9faSHans Rosenfeld #define SFP_PLUS_10GB_TYPE 0x3 2878*8f23e9faSHans Rosenfeld #define KR_10GB_TYPE 0x4 2879*8f23e9faSHans Rosenfeld #define KX4_10GB_TYPE 0x5 2880*8f23e9faSHans Rosenfeld #define BASET_10GB_TYPE 0x6 /* 10G BaseT */ 2881*8f23e9faSHans Rosenfeld #define BASET_1000_TYPE 0x7 /* 1000 BaseT */ 2882*8f23e9faSHans Rosenfeld #define BASEX_1000_TYPE 0x8 /* 1000 BaseX */ 2883*8f23e9faSHans Rosenfeld #define SGMII_TYPE 0x9 2884*8f23e9faSHans Rosenfeld #define INTERFACE_10GB_DISABLED 0xff /* Interface type not supported */ 2885*8f23e9faSHans Rosenfeld 2886*8f23e9faSHans Rosenfeld uint32_t misc_params; 2887*8f23e9faSHans Rosenfeld uint32_t rsvd[4]; 2888*8f23e9faSHans Rosenfeld } response; 2889*8f23e9faSHans Rosenfeld 2890*8f23e9faSHans Rosenfeld } params; 2891*8f23e9faSHans Rosenfeld 2892*8f23e9faSHans Rosenfeld } IOCTL_COMMON_GET_PHY_DETAILS; 2893*8f23e9faSHans Rosenfeld 2894*8f23e9faSHans Rosenfeld 2895*8f23e9faSHans Rosenfeld typedef struct 2896*8f23e9faSHans Rosenfeld { 2897*8f23e9faSHans Rosenfeld union 2898*8f23e9faSHans Rosenfeld { 2899*8f23e9faSHans Rosenfeld struct 2900*8f23e9faSHans Rosenfeld { 2901*8f23e9faSHans Rosenfeld uint32_t rsvd; 2902*8f23e9faSHans Rosenfeld } request; 2903*8f23e9faSHans Rosenfeld 2904*8f23e9faSHans Rosenfeld 2905*8f23e9faSHans Rosenfeld struct 2906*8f23e9faSHans Rosenfeld { 2907*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 2908*8f23e9faSHans Rosenfeld uint8_t port3_name; 2909*8f23e9faSHans Rosenfeld uint8_t port2_name; 2910*8f23e9faSHans Rosenfeld uint8_t port1_name; 2911*8f23e9faSHans Rosenfeld uint8_t port0_name; 2912*8f23e9faSHans Rosenfeld #endif 2913*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 2914*8f23e9faSHans Rosenfeld uint8_t port0_name; 2915*8f23e9faSHans Rosenfeld uint8_t port1_name; 2916*8f23e9faSHans Rosenfeld uint8_t port2_name; 2917*8f23e9faSHans Rosenfeld uint8_t port3_name; 2918*8f23e9faSHans Rosenfeld #endif 2919*8f23e9faSHans Rosenfeld } response; 2920*8f23e9faSHans Rosenfeld 2921*8f23e9faSHans Rosenfeld } params; 2922*8f23e9faSHans Rosenfeld 2923*8f23e9faSHans Rosenfeld } IOCTL_COMMON_GET_PORT_NAME; 2924*8f23e9faSHans Rosenfeld 2925*8f23e9faSHans Rosenfeld 2926*8f23e9faSHans Rosenfeld typedef struct 2927*8f23e9faSHans Rosenfeld { 2928*8f23e9faSHans Rosenfeld union 2929*8f23e9faSHans Rosenfeld { 2930*8f23e9faSHans Rosenfeld struct 2931*8f23e9faSHans Rosenfeld { 2932*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 2933*8f23e9faSHans Rosenfeld uint32_t rsvd:30; 2934*8f23e9faSHans Rosenfeld uint32_t pt:2; 2935*8f23e9faSHans Rosenfeld #endif 2936*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 2937*8f23e9faSHans Rosenfeld uint32_t pt:2; 2938*8f23e9faSHans Rosenfeld uint32_t rsvd:30; 2939*8f23e9faSHans Rosenfeld #endif 2940*8f23e9faSHans Rosenfeld #define PORT_TYPE_GIGE 0 2941*8f23e9faSHans Rosenfeld #define PORT_TYPE_FC 1 2942*8f23e9faSHans Rosenfeld } request; 2943*8f23e9faSHans Rosenfeld 2944*8f23e9faSHans Rosenfeld 2945*8f23e9faSHans Rosenfeld struct 2946*8f23e9faSHans Rosenfeld { 2947*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 2948*8f23e9faSHans Rosenfeld uint8_t port3_name; 2949*8f23e9faSHans Rosenfeld uint8_t port2_name; 2950*8f23e9faSHans Rosenfeld uint8_t port1_name; 2951*8f23e9faSHans Rosenfeld uint8_t port0_name; 2952*8f23e9faSHans Rosenfeld #endif 2953*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 2954*8f23e9faSHans Rosenfeld uint8_t port0_name; 2955*8f23e9faSHans Rosenfeld uint8_t port1_name; 2956*8f23e9faSHans Rosenfeld uint8_t port2_name; 2957*8f23e9faSHans Rosenfeld uint8_t port3_name; 2958*8f23e9faSHans Rosenfeld #endif 2959*8f23e9faSHans Rosenfeld } response; 2960*8f23e9faSHans Rosenfeld 2961*8f23e9faSHans Rosenfeld } params; 2962*8f23e9faSHans Rosenfeld 2963*8f23e9faSHans Rosenfeld } IOCTL_COMMON_GET_PORT_NAME_V1; 2964*8f23e9faSHans Rosenfeld 2965*8f23e9faSHans Rosenfeld 296682527734SSukumar Swaminathan typedef struct 296782527734SSukumar Swaminathan { 296882527734SSukumar Swaminathan union 296982527734SSukumar Swaminathan { 297082527734SSukumar Swaminathan struct 297182527734SSukumar Swaminathan { 297282527734SSukumar Swaminathan uint32_t fat_operation; 297382527734SSukumar Swaminathan #define RETRIEVE_FAT 0 297482527734SSukumar Swaminathan #define QUERY_FAT 1 297582527734SSukumar Swaminathan #define CLEAR_FAT 2 297682527734SSukumar Swaminathan 297782527734SSukumar Swaminathan uint32_t read_log_offset; 297882527734SSukumar Swaminathan uint32_t read_log_length; 297982527734SSukumar Swaminathan uint32_t data_buffer_size; 298082527734SSukumar Swaminathan uint32_t data_buffer; 298182527734SSukumar Swaminathan } request; 298282527734SSukumar Swaminathan 298382527734SSukumar Swaminathan struct 298482527734SSukumar Swaminathan { 298582527734SSukumar Swaminathan uint32_t log_size; 298682527734SSukumar Swaminathan uint32_t read_log_length; 298782527734SSukumar Swaminathan uint32_t rsvd0; 298882527734SSukumar Swaminathan uint32_t rsvd1; 298982527734SSukumar Swaminathan uint32_t data_buffer; 299082527734SSukumar Swaminathan } response; 299182527734SSukumar Swaminathan 299282527734SSukumar Swaminathan } params; 299382527734SSukumar Swaminathan 299482527734SSukumar Swaminathan } IOCTL_COMMON_MANAGE_FAT; 299582527734SSukumar Swaminathan 299682527734SSukumar Swaminathan 2997*8f23e9faSHans Rosenfeld typedef struct 2998*8f23e9faSHans Rosenfeld { 2999*8f23e9faSHans Rosenfeld union 3000*8f23e9faSHans Rosenfeld { 3001*8f23e9faSHans Rosenfeld struct 3002*8f23e9faSHans Rosenfeld { 3003*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3004*8f23e9faSHans Rosenfeld uint32_t EOF:1; /* word 4 */ 3005*8f23e9faSHans Rosenfeld uint32_t rsvd0:7; 3006*8f23e9faSHans Rosenfeld uint32_t desired_write_length:24; 3007*8f23e9faSHans Rosenfeld #endif 3008*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3009*8f23e9faSHans Rosenfeld uint32_t desired_write_length:24; 3010*8f23e9faSHans Rosenfeld uint32_t rsvd0:7; 3011*8f23e9faSHans Rosenfeld uint32_t EOF:1; /* word 4 */ 3012*8f23e9faSHans Rosenfeld #endif 3013*8f23e9faSHans Rosenfeld uint32_t write_offset; /* word 5 */ 3014*8f23e9faSHans Rosenfeld char object_name[(4 * 26)]; /* word 6 - 31 */ 3015*8f23e9faSHans Rosenfeld uint32_t buffer_desc_count; /* word 32 */ 3016*8f23e9faSHans Rosenfeld 3017*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3018*8f23e9faSHans Rosenfeld uint32_t rsvd:8; /* word 33 */ 3019*8f23e9faSHans Rosenfeld uint32_t buffer_length:24; 3020*8f23e9faSHans Rosenfeld #endif 3021*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3022*8f23e9faSHans Rosenfeld uint32_t buffer_length:24; 3023*8f23e9faSHans Rosenfeld uint32_t rsvd:8; /* word 33 */ 3024*8f23e9faSHans Rosenfeld #endif 3025*8f23e9faSHans Rosenfeld uint32_t buffer_addrlo; /* word 34 */ 3026*8f23e9faSHans Rosenfeld uint32_t buffer_addrhi; /* word 35 */ 3027*8f23e9faSHans Rosenfeld } request; 3028*8f23e9faSHans Rosenfeld 3029*8f23e9faSHans Rosenfeld struct 3030*8f23e9faSHans Rosenfeld { 3031*8f23e9faSHans Rosenfeld uint32_t actual_write_length; 3032*8f23e9faSHans Rosenfeld 3033*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3034*8f23e9faSHans Rosenfeld uint32_t rsvd:24; 3035*8f23e9faSHans Rosenfeld uint32_t change_status:8; 3036*8f23e9faSHans Rosenfeld #endif 3037*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3038*8f23e9faSHans Rosenfeld uint32_t change_status:8; 3039*8f23e9faSHans Rosenfeld uint32_t rsvd:24; 3040*8f23e9faSHans Rosenfeld #endif 3041*8f23e9faSHans Rosenfeld #define CS_NO_RESET 0 3042*8f23e9faSHans Rosenfeld #define CS_REBOOT_RQD 1 3043*8f23e9faSHans Rosenfeld #define CS_FW_RESET_RQD 2 3044*8f23e9faSHans Rosenfeld #define CS_PROTO_RESET_RQD 3 3045*8f23e9faSHans Rosenfeld } response; 3046*8f23e9faSHans Rosenfeld 3047*8f23e9faSHans Rosenfeld } params; 3048*8f23e9faSHans Rosenfeld 3049*8f23e9faSHans Rosenfeld } IOCTL_COMMON_WRITE_OBJECT; 3050*8f23e9faSHans Rosenfeld 3051*8f23e9faSHans Rosenfeld 3052*8f23e9faSHans Rosenfeld typedef struct 3053*8f23e9faSHans Rosenfeld { 3054*8f23e9faSHans Rosenfeld union 3055*8f23e9faSHans Rosenfeld { 3056*8f23e9faSHans Rosenfeld struct 3057*8f23e9faSHans Rosenfeld { 3058*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3059*8f23e9faSHans Rosenfeld uint32_t descriptor_offset:16; /* word 4 */ 3060*8f23e9faSHans Rosenfeld uint32_t descriptor_count:16; 3061*8f23e9faSHans Rosenfeld #endif 3062*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3063*8f23e9faSHans Rosenfeld uint32_t descriptor_count:16; 3064*8f23e9faSHans Rosenfeld uint32_t descriptor_offset:16; /* word 4 */ 3065*8f23e9faSHans Rosenfeld #endif 3066*8f23e9faSHans Rosenfeld uint32_t reserved; /* word 5 */ 3067*8f23e9faSHans Rosenfeld char object_name[(4 * 26)]; /* word 6 - 31 */ 3068*8f23e9faSHans Rosenfeld uint32_t buffer_desc_count; /* word 32 */ 3069*8f23e9faSHans Rosenfeld 3070*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3071*8f23e9faSHans Rosenfeld uint32_t rsvd:8; /* word 33 */ 3072*8f23e9faSHans Rosenfeld uint32_t buffer_length:24; 3073*8f23e9faSHans Rosenfeld #endif 3074*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3075*8f23e9faSHans Rosenfeld uint32_t buffer_length:24; 3076*8f23e9faSHans Rosenfeld uint32_t rsvd:8; /* word 33 */ 3077*8f23e9faSHans Rosenfeld #endif 3078*8f23e9faSHans Rosenfeld uint32_t buffer_addrlo; /* word 34 */ 3079*8f23e9faSHans Rosenfeld uint32_t buffer_addrhi; /* word 35 */ 3080*8f23e9faSHans Rosenfeld } request; 3081*8f23e9faSHans Rosenfeld 3082*8f23e9faSHans Rosenfeld struct 3083*8f23e9faSHans Rosenfeld { 3084*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3085*8f23e9faSHans Rosenfeld uint32_t reserved:16; 3086*8f23e9faSHans Rosenfeld uint32_t actual_descriptor_count:16; 3087*8f23e9faSHans Rosenfeld #endif 3088*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3089*8f23e9faSHans Rosenfeld uint32_t actual_descriptor_count:16; 3090*8f23e9faSHans Rosenfeld uint32_t reserved:16; 3091*8f23e9faSHans Rosenfeld #endif 3092*8f23e9faSHans Rosenfeld } response; 3093*8f23e9faSHans Rosenfeld 3094*8f23e9faSHans Rosenfeld } params; 3095*8f23e9faSHans Rosenfeld 3096*8f23e9faSHans Rosenfeld } IOCTL_COMMON_READ_OBJECT_LIST; 3097*8f23e9faSHans Rosenfeld 3098*8f23e9faSHans Rosenfeld 3099*8f23e9faSHans Rosenfeld typedef struct 3100*8f23e9faSHans Rosenfeld { 3101*8f23e9faSHans Rosenfeld union 3102*8f23e9faSHans Rosenfeld { 3103*8f23e9faSHans Rosenfeld struct 3104*8f23e9faSHans Rosenfeld { 3105*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3106*8f23e9faSHans Rosenfeld uint32_t reserved:16; /* word 4 */ 3107*8f23e9faSHans Rosenfeld uint32_t boot_instance:8; 3108*8f23e9faSHans Rosenfeld uint32_t boot_status:8; 3109*8f23e9faSHans Rosenfeld #endif 3110*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3111*8f23e9faSHans Rosenfeld uint32_t boot_status:8; 3112*8f23e9faSHans Rosenfeld uint32_t boot_instance:8; 3113*8f23e9faSHans Rosenfeld uint32_t reserved:16; /* word 4 */ 3114*8f23e9faSHans Rosenfeld #endif 3115*8f23e9faSHans Rosenfeld } request; 3116*8f23e9faSHans Rosenfeld 3117*8f23e9faSHans Rosenfeld struct 3118*8f23e9faSHans Rosenfeld { 3119*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3120*8f23e9faSHans Rosenfeld uint32_t reserved:16; /* word 4 */ 3121*8f23e9faSHans Rosenfeld uint32_t boot_instance:8; 3122*8f23e9faSHans Rosenfeld uint32_t boot_status:8; 3123*8f23e9faSHans Rosenfeld #endif 3124*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3125*8f23e9faSHans Rosenfeld uint32_t boot_status:8; 3126*8f23e9faSHans Rosenfeld uint32_t boot_instance:8; 3127*8f23e9faSHans Rosenfeld uint32_t reserved:16; /* word 4 */ 3128*8f23e9faSHans Rosenfeld #endif 3129*8f23e9faSHans Rosenfeld } response; 3130*8f23e9faSHans Rosenfeld 3131*8f23e9faSHans Rosenfeld } params; 3132*8f23e9faSHans Rosenfeld 3133*8f23e9faSHans Rosenfeld } IOCTL_COMMON_BOOT_CFG; 3134*8f23e9faSHans Rosenfeld 3135*8f23e9faSHans Rosenfeld 313682527734SSukumar Swaminathan /* IOCTL_COMMON_QUERY_FIRMWARE_CONFIG */ 313782527734SSukumar Swaminathan typedef struct _BE_FW_CFG 313882527734SSukumar Swaminathan { 313982527734SSukumar Swaminathan uint32_t BEConfigNumber; 314082527734SSukumar Swaminathan uint32_t ASICRevision; 314182527734SSukumar Swaminathan uint32_t PhysicalPort; 314282527734SSukumar Swaminathan uint32_t FunctionMode; 314382527734SSukumar Swaminathan uint32_t ULPMode; 314482527734SSukumar Swaminathan 314582527734SSukumar Swaminathan } BE_FW_CFG; 314682527734SSukumar Swaminathan 314782527734SSukumar Swaminathan typedef struct _IOCTL_COMMON_QUERY_FIRMWARE_CONFIG 314882527734SSukumar Swaminathan { 314982527734SSukumar Swaminathan union 315082527734SSukumar Swaminathan { 315182527734SSukumar Swaminathan struct 315282527734SSukumar Swaminathan { 315382527734SSukumar Swaminathan uint32_t rsvd0; 315482527734SSukumar Swaminathan } request; 315582527734SSukumar Swaminathan 315682527734SSukumar Swaminathan BE_FW_CFG response; 315782527734SSukumar Swaminathan 315882527734SSukumar Swaminathan } params; 315982527734SSukumar Swaminathan 316082527734SSukumar Swaminathan } IOCTL_COMMON_QUERY_FIRMWARE_CONFIG; 316182527734SSukumar Swaminathan 316282527734SSukumar Swaminathan 316382527734SSukumar Swaminathan 316482527734SSukumar Swaminathan /* IOCTL_FCOE_READ_FCF_TABLE */ 316582527734SSukumar Swaminathan typedef struct 316682527734SSukumar Swaminathan { 316782527734SSukumar Swaminathan uint32_t max_recv_size; 316882527734SSukumar Swaminathan uint32_t fka_adv_period; 316982527734SSukumar Swaminathan uint32_t fip_priority; 317082527734SSukumar Swaminathan 317182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 317282527734SSukumar Swaminathan uint8_t fcf_mac_address_hi[4]; 317382527734SSukumar Swaminathan 317482527734SSukumar Swaminathan uint8_t mac_address_provider; 317582527734SSukumar Swaminathan uint8_t fcf_available; 317682527734SSukumar Swaminathan uint8_t fcf_mac_address_low[2]; 317782527734SSukumar Swaminathan 317882527734SSukumar Swaminathan uint8_t fabric_name_identifier[8]; 317982527734SSukumar Swaminathan 3180*8f23e9faSHans Rosenfeld uint8_t fcf_sol:1; 3181*8f23e9faSHans Rosenfeld uint8_t rsvd0:5; 3182*8f23e9faSHans Rosenfeld uint8_t fcf_fc:1; 3183*8f23e9faSHans Rosenfeld uint8_t fcf_valid:1; 318482527734SSukumar Swaminathan uint8_t fc_map[3]; 318582527734SSukumar Swaminathan 318682527734SSukumar Swaminathan uint16_t fcf_state; 318782527734SSukumar Swaminathan uint16_t fcf_index; 318882527734SSukumar Swaminathan #endif 318982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 319082527734SSukumar Swaminathan uint8_t fcf_mac_address_hi[4]; 319182527734SSukumar Swaminathan 319282527734SSukumar Swaminathan uint8_t fcf_mac_address_low[2]; 319382527734SSukumar Swaminathan uint8_t fcf_available; 319482527734SSukumar Swaminathan uint8_t mac_address_provider; 319582527734SSukumar Swaminathan 319682527734SSukumar Swaminathan uint8_t fabric_name_identifier[8]; 319782527734SSukumar Swaminathan 319882527734SSukumar Swaminathan uint8_t fc_map[3]; 3199*8f23e9faSHans Rosenfeld uint8_t fcf_valid:1; 3200*8f23e9faSHans Rosenfeld uint8_t fcf_fc:1; 3201*8f23e9faSHans Rosenfeld uint8_t rsvd0:5; 3202*8f23e9faSHans Rosenfeld uint8_t fcf_sol:1; 320382527734SSukumar Swaminathan 320482527734SSukumar Swaminathan uint16_t fcf_index; 320582527734SSukumar Swaminathan uint16_t fcf_state; 320682527734SSukumar Swaminathan #endif 320782527734SSukumar Swaminathan 320882527734SSukumar Swaminathan uint8_t vlan_bitmap[512]; 320982527734SSukumar Swaminathan uint8_t switch_name_identifier[8]; 321082527734SSukumar Swaminathan 321182527734SSukumar Swaminathan } FCF_RECORD_t; 321282527734SSukumar Swaminathan 321382527734SSukumar Swaminathan #define EMLXS_FCOE_MAX_RCV_SZ 0x800 321482527734SSukumar Swaminathan 321582527734SSukumar Swaminathan /* defines for mac_address_provider */ 321682527734SSukumar Swaminathan #define EMLXS_MAM_BOTH 0 /* Both SPMA and FPMA */ 321782527734SSukumar Swaminathan #define EMLXS_MAM_FPMA 1 /* Fabric Provided MAC Address */ 321882527734SSukumar Swaminathan #define EMLXS_MAM_SPMA 2 /* Server Provided MAC Address */ 321982527734SSukumar Swaminathan 322082527734SSukumar Swaminathan typedef struct 322182527734SSukumar Swaminathan { 322282527734SSukumar Swaminathan union 322382527734SSukumar Swaminathan { 322482527734SSukumar Swaminathan struct 322582527734SSukumar Swaminathan { 322682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 322782527734SSukumar Swaminathan uint16_t rsvd0; 322882527734SSukumar Swaminathan uint16_t fcf_index; 322982527734SSukumar Swaminathan #endif 323082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 323182527734SSukumar Swaminathan uint16_t fcf_index; 323282527734SSukumar Swaminathan uint16_t rsvd0; 323382527734SSukumar Swaminathan #endif 323482527734SSukumar Swaminathan 323582527734SSukumar Swaminathan } request; 323682527734SSukumar Swaminathan 323782527734SSukumar Swaminathan struct 323882527734SSukumar Swaminathan { 323982527734SSukumar Swaminathan uint32_t event_tag; 324082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 324182527734SSukumar Swaminathan uint16_t rsvd0; 324282527734SSukumar Swaminathan uint16_t next_valid_fcf_index; 324382527734SSukumar Swaminathan #endif 324482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 324582527734SSukumar Swaminathan uint16_t next_valid_fcf_index; 324682527734SSukumar Swaminathan uint16_t rsvd0; 324782527734SSukumar Swaminathan #endif 324882527734SSukumar Swaminathan FCF_RECORD_t fcf_entry[1]; 324982527734SSukumar Swaminathan 325082527734SSukumar Swaminathan } response; 325182527734SSukumar Swaminathan 325282527734SSukumar Swaminathan } params; 325382527734SSukumar Swaminathan 325482527734SSukumar Swaminathan } IOCTL_FCOE_READ_FCF_TABLE; 325582527734SSukumar Swaminathan 325682527734SSukumar Swaminathan 325782527734SSukumar Swaminathan /* IOCTL_FCOE_ADD_FCF_TABLE */ 325882527734SSukumar Swaminathan typedef struct 325982527734SSukumar Swaminathan { 326082527734SSukumar Swaminathan union 326182527734SSukumar Swaminathan { 326282527734SSukumar Swaminathan struct 326382527734SSukumar Swaminathan { 326482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 326582527734SSukumar Swaminathan uint16_t rsvd0; 326682527734SSukumar Swaminathan uint16_t fcf_index; 326782527734SSukumar Swaminathan #endif 326882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 326982527734SSukumar Swaminathan uint16_t fcf_index; 327082527734SSukumar Swaminathan uint16_t rsvd0; 327182527734SSukumar Swaminathan #endif 327282527734SSukumar Swaminathan FCF_RECORD_t fcf_entry; 327382527734SSukumar Swaminathan 327482527734SSukumar Swaminathan } request; 3275a9800bebSGarrett D'Amore } params; 3276a9800bebSGarrett D'Amore 3277a9800bebSGarrett D'Amore } IOCTL_FCOE_ADD_FCF_TABLE; 3278a9800bebSGarrett D'Amore 327982527734SSukumar Swaminathan 3280a9800bebSGarrett D'Amore /* IOCTL_FCOE_DELETE_FCF_TABLE */ 3281a9800bebSGarrett D'Amore typedef struct 3282a9800bebSGarrett D'Amore { 3283a9800bebSGarrett D'Amore union 3284a9800bebSGarrett D'Amore { 3285a9800bebSGarrett D'Amore struct 3286a9800bebSGarrett D'Amore { 3287a9800bebSGarrett D'Amore #ifdef EMLXS_BIG_ENDIAN 3288a9800bebSGarrett D'Amore uint16_t fcf_indexes[1]; 3289a9800bebSGarrett D'Amore uint16_t fcf_count; 3290a9800bebSGarrett D'Amore #endif 3291a9800bebSGarrett D'Amore #ifdef EMLXS_LITTLE_ENDIAN 3292a9800bebSGarrett D'Amore uint16_t fcf_count; 3293a9800bebSGarrett D'Amore uint16_t fcf_indexes[1]; 3294a9800bebSGarrett D'Amore #endif 3295a9800bebSGarrett D'Amore 3296a9800bebSGarrett D'Amore } request; 3297a9800bebSGarrett D'Amore } params; 3298a9800bebSGarrett D'Amore 3299a9800bebSGarrett D'Amore } IOCTL_FCOE_DELETE_FCF_TABLE; 3300a9800bebSGarrett D'Amore 3301a9800bebSGarrett D'Amore 3302a9800bebSGarrett D'Amore /* IOCTL_FCOE_REDISCOVER_FCF_TABLE */ 3303a9800bebSGarrett D'Amore typedef struct 3304a9800bebSGarrett D'Amore { 3305a9800bebSGarrett D'Amore union 3306a9800bebSGarrett D'Amore { 330782527734SSukumar Swaminathan struct 330882527734SSukumar Swaminathan { 330982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 331082527734SSukumar Swaminathan uint16_t rsvd0; 3311a9800bebSGarrett D'Amore uint16_t fcf_count; 331282527734SSukumar Swaminathan #endif 331382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 3314a9800bebSGarrett D'Amore uint16_t fcf_count; 331582527734SSukumar Swaminathan uint16_t rsvd0; 331682527734SSukumar Swaminathan #endif 3317a9800bebSGarrett D'Amore uint32_t rsvd1; 3318a9800bebSGarrett D'Amore uint16_t fcf_index[1]; 3319a9800bebSGarrett D'Amore 3320a9800bebSGarrett D'Amore } request; 332182527734SSukumar Swaminathan } params; 332282527734SSukumar Swaminathan 3323a9800bebSGarrett D'Amore } IOCTL_FCOE_REDISCOVER_FCF_TABLE; 3324a9800bebSGarrett D'Amore 332582527734SSukumar Swaminathan 332682527734SSukumar Swaminathan #define FCOE_FCF_MAC0 0x0E 332782527734SSukumar Swaminathan #define FCOE_FCF_MAC1 0xFC 332882527734SSukumar Swaminathan #define FCOE_FCF_MAC2 0x00 332982527734SSukumar Swaminathan #define FCOE_FCF_MAC3 0xFF 333082527734SSukumar Swaminathan #define FCOE_FCF_MAC4 0xFF 333182527734SSukumar Swaminathan #define FCOE_FCF_MAC5 0xFE 333282527734SSukumar Swaminathan 333382527734SSukumar Swaminathan #define FCOE_FCF_MAP0 0x0E 333482527734SSukumar Swaminathan #define FCOE_FCF_MAP1 0xFC 333582527734SSukumar Swaminathan #define FCOE_FCF_MAP2 0x00 333682527734SSukumar Swaminathan 333782527734SSukumar Swaminathan #define MGMT_STATUS_FCF_IN_USE 0x3a 333882527734SSukumar Swaminathan 333982527734SSukumar Swaminathan /* IOCTL_COMMON_NOP */ 334082527734SSukumar Swaminathan typedef struct _IOCTL_COMMON_NOP 334182527734SSukumar Swaminathan { 334282527734SSukumar Swaminathan union 334382527734SSukumar Swaminathan { 334482527734SSukumar Swaminathan struct 334582527734SSukumar Swaminathan { 334682527734SSukumar Swaminathan uint64_t context; 334782527734SSukumar Swaminathan } request; 334882527734SSukumar Swaminathan 334982527734SSukumar Swaminathan struct 335082527734SSukumar Swaminathan { 335182527734SSukumar Swaminathan uint64_t context; 335282527734SSukumar Swaminathan } response; 335382527734SSukumar Swaminathan 335482527734SSukumar Swaminathan } params; 335582527734SSukumar Swaminathan 335682527734SSukumar Swaminathan } IOCTL_COMMON_NOP; 335782527734SSukumar Swaminathan 335882527734SSukumar Swaminathan 335982527734SSukumar Swaminathan /* Context for EQ create */ 336082527734SSukumar Swaminathan typedef struct _EQ_CONTEXT 336182527734SSukumar Swaminathan { 336282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 336382527734SSukumar Swaminathan uint32_t Size:1; 336482527734SSukumar Swaminathan uint32_t Rsvd2:1; 336582527734SSukumar Swaminathan uint32_t Valid:1; 3366*8f23e9faSHans Rosenfeld uint32_t Rsvd1:29; 336782527734SSukumar Swaminathan 336882527734SSukumar Swaminathan uint32_t Armed:1; 3369*8f23e9faSHans Rosenfeld uint32_t Rsvd4:2; 337082527734SSukumar Swaminathan uint32_t Count:3; 3371*8f23e9faSHans Rosenfeld uint32_t Rsvd3:26; 337282527734SSukumar Swaminathan 3373*8f23e9faSHans Rosenfeld uint32_t Rsvd6:9; 337482527734SSukumar Swaminathan uint32_t DelayMult:10; 3375*8f23e9faSHans Rosenfeld uint32_t Rsvd5:13; 337682527734SSukumar Swaminathan #endif 337782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 3378*8f23e9faSHans Rosenfeld uint32_t Rsvd1:29; 337982527734SSukumar Swaminathan uint32_t Valid:1; 338082527734SSukumar Swaminathan uint32_t Rsvd2:1; 338182527734SSukumar Swaminathan uint32_t Size:1; 338282527734SSukumar Swaminathan 3383*8f23e9faSHans Rosenfeld uint32_t Rsvd3:26; 338482527734SSukumar Swaminathan uint32_t Count:3; 3385*8f23e9faSHans Rosenfeld uint32_t Rsvd4:2; 338682527734SSukumar Swaminathan uint32_t Armed:1; 338782527734SSukumar Swaminathan 3388*8f23e9faSHans Rosenfeld uint32_t Rsvd5:13; 338982527734SSukumar Swaminathan uint32_t DelayMult:10; 3390*8f23e9faSHans Rosenfeld uint32_t Rsvd6:9; 339182527734SSukumar Swaminathan #endif 339282527734SSukumar Swaminathan 3393*8f23e9faSHans Rosenfeld uint32_t Rsvd7; 3394*8f23e9faSHans Rosenfeld 3395*8f23e9faSHans Rosenfeld } EQ_CONTEXT; 339682527734SSukumar Swaminathan 339782527734SSukumar Swaminathan 339882527734SSukumar Swaminathan /* define for Count field */ 339982527734SSukumar Swaminathan #define EQ_ELEMENT_COUNT_1024 2 340082527734SSukumar Swaminathan #define EQ_ELEMENT_COUNT_2048 3 340182527734SSukumar Swaminathan #define EQ_ELEMENT_COUNT_4096 4 340282527734SSukumar Swaminathan 340382527734SSukumar Swaminathan /* define for Size field */ 340482527734SSukumar Swaminathan #define EQ_ELEMENT_SIZE_4 0 340582527734SSukumar Swaminathan 340682527734SSukumar Swaminathan /* define for DelayMullt - used for interrupt coalescing */ 3407a9800bebSGarrett D'Amore #define EQ_DELAY_MULT 64 340882527734SSukumar Swaminathan 340982527734SSukumar Swaminathan /* Context for CQ create */ 341082527734SSukumar Swaminathan typedef struct _CQ_CONTEXT 341182527734SSukumar Swaminathan { 341282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 341382527734SSukumar Swaminathan uint32_t Eventable:1; 3414*8f23e9faSHans Rosenfeld uint32_t Rsvd3:1; 341582527734SSukumar Swaminathan uint32_t Valid:1; 341682527734SSukumar Swaminathan uint32_t Count:2; 3417*8f23e9faSHans Rosenfeld uint32_t Rsvd2:12; 341882527734SSukumar Swaminathan uint32_t NoDelay:1; 341982527734SSukumar Swaminathan uint32_t CoalesceWM:2; 3420*8f23e9faSHans Rosenfeld uint32_t Rsvd1:12; 342182527734SSukumar Swaminathan 342282527734SSukumar Swaminathan uint32_t Armed:1; 3423*8f23e9faSHans Rosenfeld uint32_t Rsvd5:1; 342482527734SSukumar Swaminathan uint32_t EQId:8; 3425*8f23e9faSHans Rosenfeld uint32_t Rsvd4:22; 342682527734SSukumar Swaminathan 3427*8f23e9faSHans Rosenfeld uint32_t Rsvd6; 342882527734SSukumar Swaminathan #endif 342982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 3430*8f23e9faSHans Rosenfeld uint32_t Rsvd1:12; 343182527734SSukumar Swaminathan uint32_t CoalesceWM:2; 343282527734SSukumar Swaminathan uint32_t NoDelay:1; 3433*8f23e9faSHans Rosenfeld uint32_t Rsvd2:12; 343482527734SSukumar Swaminathan uint32_t Count:2; 343582527734SSukumar Swaminathan uint32_t Valid:1; 3436*8f23e9faSHans Rosenfeld uint32_t Rsvd3:1; 343782527734SSukumar Swaminathan uint32_t Eventable:1; 343882527734SSukumar Swaminathan 3439*8f23e9faSHans Rosenfeld uint32_t Rsvd4:22; 344082527734SSukumar Swaminathan uint32_t EQId:8; 3441*8f23e9faSHans Rosenfeld uint32_t Rsvd5:1; 344282527734SSukumar Swaminathan uint32_t Armed:1; 344382527734SSukumar Swaminathan 3444*8f23e9faSHans Rosenfeld uint32_t Rsvd6; 344582527734SSukumar Swaminathan #endif 344682527734SSukumar Swaminathan 3447*8f23e9faSHans Rosenfeld uint32_t Rsvd7; 344882527734SSukumar Swaminathan 344982527734SSukumar Swaminathan } CQ_CONTEXT; 345082527734SSukumar Swaminathan 3451*8f23e9faSHans Rosenfeld typedef struct _CQ_CONTEXT_V2 3452*8f23e9faSHans Rosenfeld { 3453*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3454*8f23e9faSHans Rosenfeld uint32_t Eventable:1; 3455*8f23e9faSHans Rosenfeld uint32_t Rsvd3:1; 3456*8f23e9faSHans Rosenfeld uint32_t Valid:1; 3457*8f23e9faSHans Rosenfeld uint32_t CqeCnt:2; 3458*8f23e9faSHans Rosenfeld uint32_t CqeSize:2; 3459*8f23e9faSHans Rosenfeld uint32_t Rsvd2:9; 3460*8f23e9faSHans Rosenfeld uint32_t AutoValid:1; 3461*8f23e9faSHans Rosenfeld uint32_t NoDelay:1; 3462*8f23e9faSHans Rosenfeld uint32_t CoalesceWM:2; 3463*8f23e9faSHans Rosenfeld uint32_t Rsvd1:12; 3464*8f23e9faSHans Rosenfeld 3465*8f23e9faSHans Rosenfeld uint32_t Armed:1; 3466*8f23e9faSHans Rosenfeld uint32_t Rsvd4:15; 3467*8f23e9faSHans Rosenfeld uint32_t EQId:16; 3468*8f23e9faSHans Rosenfeld 3469*8f23e9faSHans Rosenfeld uint32_t Rsvd5:16; 3470*8f23e9faSHans Rosenfeld uint32_t Count1:16; 3471*8f23e9faSHans Rosenfeld #endif 3472*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3473*8f23e9faSHans Rosenfeld uint32_t Rsvd1:12; 3474*8f23e9faSHans Rosenfeld uint32_t CoalesceWM:2; 3475*8f23e9faSHans Rosenfeld uint32_t NoDelay:1; 3476*8f23e9faSHans Rosenfeld uint32_t AutoValid:1; 3477*8f23e9faSHans Rosenfeld uint32_t Rsvd2:9; 3478*8f23e9faSHans Rosenfeld uint32_t CqeSize:2; 3479*8f23e9faSHans Rosenfeld uint32_t CqeCnt:2; 3480*8f23e9faSHans Rosenfeld uint32_t Valid:1; 3481*8f23e9faSHans Rosenfeld uint32_t Rsvd3:1; 3482*8f23e9faSHans Rosenfeld uint32_t Eventable:1; 3483*8f23e9faSHans Rosenfeld 3484*8f23e9faSHans Rosenfeld uint32_t EQId:16; 3485*8f23e9faSHans Rosenfeld uint32_t Rsvd4:15; 3486*8f23e9faSHans Rosenfeld uint32_t Armed:1; 3487*8f23e9faSHans Rosenfeld 3488*8f23e9faSHans Rosenfeld uint32_t Count1:16; 3489*8f23e9faSHans Rosenfeld uint32_t Rsvd5:16; 3490*8f23e9faSHans Rosenfeld #endif 3491*8f23e9faSHans Rosenfeld 3492*8f23e9faSHans Rosenfeld uint32_t Rsvd7; 3493*8f23e9faSHans Rosenfeld 3494*8f23e9faSHans Rosenfeld } CQ_CONTEXT_V2; 3495*8f23e9faSHans Rosenfeld 3496*8f23e9faSHans Rosenfeld /* CqeSize */ 3497*8f23e9faSHans Rosenfeld #define CQE_SIZE_16_BYTES 0 3498*8f23e9faSHans Rosenfeld #define CQE_SIZE_32_BYTES 1 3499*8f23e9faSHans Rosenfeld 350082527734SSukumar Swaminathan /* define for Count field */ 350182527734SSukumar Swaminathan #define CQ_ELEMENT_COUNT_256 0 350282527734SSukumar Swaminathan #define CQ_ELEMENT_COUNT_512 1 350382527734SSukumar Swaminathan #define CQ_ELEMENT_COUNT_1024 2 3504*8f23e9faSHans Rosenfeld #define CQ_ELEMENT_COUNT_SPECIFIED 3 350582527734SSukumar Swaminathan 350682527734SSukumar Swaminathan /* Context for MQ create */ 350782527734SSukumar Swaminathan typedef struct _MQ_CONTEXT 350882527734SSukumar Swaminathan { 350982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 351082527734SSukumar Swaminathan uint32_t CQId:10; 351182527734SSukumar Swaminathan uint32_t Rsvd2:2; 351282527734SSukumar Swaminathan uint32_t Size:4; 3513*8f23e9faSHans Rosenfeld uint32_t Rsvd1:16; 351482527734SSukumar Swaminathan 351582527734SSukumar Swaminathan uint32_t Valid:1; 3516*8f23e9faSHans Rosenfeld uint32_t Rsvd3:31; 3517*8f23e9faSHans Rosenfeld 3518*8f23e9faSHans Rosenfeld uint32_t Rsvd4:21; 3519*8f23e9faSHans Rosenfeld uint32_t ACQId:10; 3520*8f23e9faSHans Rosenfeld uint32_t ACQV:1; 352182527734SSukumar Swaminathan #endif 352282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 3523*8f23e9faSHans Rosenfeld uint32_t Rsvd1:16; 352482527734SSukumar Swaminathan uint32_t Size:4; 352582527734SSukumar Swaminathan uint32_t Rsvd2:2; 352682527734SSukumar Swaminathan uint32_t CQId:10; 352782527734SSukumar Swaminathan 3528*8f23e9faSHans Rosenfeld uint32_t Rsvd3:31; 352982527734SSukumar Swaminathan uint32_t Valid:1; 3530*8f23e9faSHans Rosenfeld 3531*8f23e9faSHans Rosenfeld uint32_t ACQV:1; 3532*8f23e9faSHans Rosenfeld uint32_t ACQId:10; 3533*8f23e9faSHans Rosenfeld uint32_t Rsvd4:21; 353482527734SSukumar Swaminathan #endif 353582527734SSukumar Swaminathan 3536*8f23e9faSHans Rosenfeld uint32_t Rsvd5; 353782527734SSukumar Swaminathan 353882527734SSukumar Swaminathan } MQ_CONTEXT; 353982527734SSukumar Swaminathan 3540*8f23e9faSHans Rosenfeld 3541*8f23e9faSHans Rosenfeld typedef struct _MQ_CONTEXT_V1 3542*8f23e9faSHans Rosenfeld { 3543*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3544*8f23e9faSHans Rosenfeld uint32_t Rsvd2:12; 3545*8f23e9faSHans Rosenfeld uint32_t Size:4; 3546*8f23e9faSHans Rosenfeld uint32_t ACQId:16; 3547*8f23e9faSHans Rosenfeld 3548*8f23e9faSHans Rosenfeld uint32_t Valid:1; 3549*8f23e9faSHans Rosenfeld uint32_t Rsvd3:31; 3550*8f23e9faSHans Rosenfeld 3551*8f23e9faSHans Rosenfeld uint32_t Rsvd4:31; 3552*8f23e9faSHans Rosenfeld uint32_t ACQV:1; 3553*8f23e9faSHans Rosenfeld #endif 3554*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3555*8f23e9faSHans Rosenfeld uint32_t ACQId:16; 3556*8f23e9faSHans Rosenfeld uint32_t Size:4; 3557*8f23e9faSHans Rosenfeld uint32_t Rsvd2:12; 3558*8f23e9faSHans Rosenfeld 3559*8f23e9faSHans Rosenfeld uint32_t Rsvd3:31; 3560*8f23e9faSHans Rosenfeld uint32_t Valid:1; 3561*8f23e9faSHans Rosenfeld 3562*8f23e9faSHans Rosenfeld uint32_t ACQV:1; 3563*8f23e9faSHans Rosenfeld uint32_t Rsvd4:31; 3564*8f23e9faSHans Rosenfeld #endif 3565*8f23e9faSHans Rosenfeld 3566*8f23e9faSHans Rosenfeld uint32_t Rsvd5; 3567*8f23e9faSHans Rosenfeld 3568*8f23e9faSHans Rosenfeld } MQ_CONTEXT_V1; 3569*8f23e9faSHans Rosenfeld 3570*8f23e9faSHans Rosenfeld 357182527734SSukumar Swaminathan /* define for Size field */ 357282527734SSukumar Swaminathan #define MQ_ELEMENT_COUNT_16 0x05 357382527734SSukumar Swaminathan 357482527734SSukumar Swaminathan /* Context for RQ create */ 357582527734SSukumar Swaminathan typedef struct _RQ_CONTEXT 357682527734SSukumar Swaminathan { 357782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 3578*8f23e9faSHans Rosenfeld uint32_t Rsvd2:12; 3579*8f23e9faSHans Rosenfeld uint32_t RqeCnt:4; 358082527734SSukumar Swaminathan uint32_t Rsvd1:16; 358182527734SSukumar Swaminathan 358282527734SSukumar Swaminathan uint32_t Rsvd3; 358382527734SSukumar Swaminathan 3584*8f23e9faSHans Rosenfeld uint32_t CQId:16; 358582527734SSukumar Swaminathan uint32_t BufferSize:16; 358682527734SSukumar Swaminathan #endif 358782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 358882527734SSukumar Swaminathan uint32_t Rsvd1:16; 3589*8f23e9faSHans Rosenfeld uint32_t RqeCnt:4; 3590*8f23e9faSHans Rosenfeld uint32_t Rsvd2:12; 359182527734SSukumar Swaminathan 359282527734SSukumar Swaminathan uint32_t Rsvd3; 359382527734SSukumar Swaminathan 359482527734SSukumar Swaminathan uint32_t BufferSize:16; 3595*8f23e9faSHans Rosenfeld uint32_t CQId:16; 359682527734SSukumar Swaminathan #endif 359782527734SSukumar Swaminathan 359882527734SSukumar Swaminathan uint32_t Rsvd5; 359982527734SSukumar Swaminathan 360082527734SSukumar Swaminathan } RQ_CONTEXT; 360182527734SSukumar Swaminathan 3602*8f23e9faSHans Rosenfeld typedef struct _RQ_CONTEXT_V1 3603*8f23e9faSHans Rosenfeld { 3604*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3605*8f23e9faSHans Rosenfeld uint32_t RqeCnt:16; 3606*8f23e9faSHans Rosenfeld uint32_t Rsvd1:4; 3607*8f23e9faSHans Rosenfeld uint32_t RqeSize:4; 3608*8f23e9faSHans Rosenfeld uint32_t PageSize:8; 3609*8f23e9faSHans Rosenfeld 3610*8f23e9faSHans Rosenfeld uint32_t Rsvd2; 3611*8f23e9faSHans Rosenfeld 3612*8f23e9faSHans Rosenfeld uint32_t CQId:16; 3613*8f23e9faSHans Rosenfeld uint32_t Rsvd:16; 3614*8f23e9faSHans Rosenfeld #endif 3615*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3616*8f23e9faSHans Rosenfeld uint32_t PageSize:8; 3617*8f23e9faSHans Rosenfeld uint32_t RqeSize:4; 3618*8f23e9faSHans Rosenfeld uint32_t Rsvd1:4; 3619*8f23e9faSHans Rosenfeld uint32_t RqeCnt:16; 3620*8f23e9faSHans Rosenfeld 3621*8f23e9faSHans Rosenfeld uint32_t Rsvd2; 3622*8f23e9faSHans Rosenfeld 3623*8f23e9faSHans Rosenfeld uint32_t Rsvd:16; 3624*8f23e9faSHans Rosenfeld uint32_t CQId:16; 3625*8f23e9faSHans Rosenfeld #endif 3626*8f23e9faSHans Rosenfeld 3627*8f23e9faSHans Rosenfeld uint32_t BufferSize; 3628*8f23e9faSHans Rosenfeld 3629*8f23e9faSHans Rosenfeld } RQ_CONTEXT_V1; 3630*8f23e9faSHans Rosenfeld 3631*8f23e9faSHans Rosenfeld /* RqeSize */ 3632*8f23e9faSHans Rosenfeld #define RQE_SIZE_8_BYTES 0x02 3633*8f23e9faSHans Rosenfeld #define RQE_SIZE_16_BYTES 0x03 3634*8f23e9faSHans Rosenfeld #define RQE_SIZE_32_BYTES 0x04 3635*8f23e9faSHans Rosenfeld #define RQE_SIZE_64_BYTES 0x05 3636*8f23e9faSHans Rosenfeld #define RQE_SIZE_128_BYTES 0x06 3637*8f23e9faSHans Rosenfeld 3638*8f23e9faSHans Rosenfeld /* RQ PageSize */ 3639*8f23e9faSHans Rosenfeld #define RQ_PAGE_SIZE_4K 0x01 3640*8f23e9faSHans Rosenfeld #define RQ_PAGE_SIZE_8K 0x02 3641*8f23e9faSHans Rosenfeld #define RQ_PAGE_SIZE_16K 0x04 3642*8f23e9faSHans Rosenfeld #define RQ_PAGE_SIZE_32K 0x08 3643*8f23e9faSHans Rosenfeld #define RQ_PAGE_SIZE_64K 0x10 3644*8f23e9faSHans Rosenfeld 364582527734SSukumar Swaminathan 364682527734SSukumar Swaminathan /* IOCTL_COMMON_EQ_CREATE */ 364782527734SSukumar Swaminathan typedef struct 364882527734SSukumar Swaminathan { 364982527734SSukumar Swaminathan union 365082527734SSukumar Swaminathan { 365182527734SSukumar Swaminathan struct 365282527734SSukumar Swaminathan { 365382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 365482527734SSukumar Swaminathan uint16_t Rsvd1; 365582527734SSukumar Swaminathan uint16_t NumPages; 365682527734SSukumar Swaminathan #endif 365782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 365882527734SSukumar Swaminathan uint16_t NumPages; 365982527734SSukumar Swaminathan uint16_t Rsvd1; 366082527734SSukumar Swaminathan #endif 366182527734SSukumar Swaminathan EQ_CONTEXT EQContext; 366282527734SSukumar Swaminathan BE_PHYS_ADDR Pages[8]; 366382527734SSukumar Swaminathan } request; 366482527734SSukumar Swaminathan 366582527734SSukumar Swaminathan struct 366682527734SSukumar Swaminathan { 366782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 3668*8f23e9faSHans Rosenfeld uint16_t MsiIndex; /* V1 only */ 366982527734SSukumar Swaminathan uint16_t EQId; 367082527734SSukumar Swaminathan #endif 367182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 367282527734SSukumar Swaminathan uint16_t EQId; 3673*8f23e9faSHans Rosenfeld uint16_t MsiIndex; /* V1 only */ 367482527734SSukumar Swaminathan #endif 367582527734SSukumar Swaminathan } response; 367682527734SSukumar Swaminathan } params; 367782527734SSukumar Swaminathan 367882527734SSukumar Swaminathan } IOCTL_COMMON_EQ_CREATE; 367982527734SSukumar Swaminathan 368082527734SSukumar Swaminathan 3681*8f23e9faSHans Rosenfeld typedef struct 3682*8f23e9faSHans Rosenfeld { 3683*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3684*8f23e9faSHans Rosenfeld uint32_t Rsvd1:24; /* Word 0 */ 3685*8f23e9faSHans Rosenfeld uint32_t ProtocolType:8; 3686*8f23e9faSHans Rosenfeld 3687*8f23e9faSHans Rosenfeld uint32_t Rsvd3:3; /* Word 1 */ 3688*8f23e9faSHans Rosenfeld uint32_t SliHint2:5; 3689*8f23e9faSHans Rosenfeld uint32_t SliHint1:8; 3690*8f23e9faSHans Rosenfeld uint32_t IfType:4; 3691*8f23e9faSHans Rosenfeld uint32_t SliFamily:4; 3692*8f23e9faSHans Rosenfeld uint32_t Revision:4; 3693*8f23e9faSHans Rosenfeld uint32_t Rsvd2:3; 3694*8f23e9faSHans Rosenfeld uint32_t FT:1; 3695*8f23e9faSHans Rosenfeld 3696*8f23e9faSHans Rosenfeld uint32_t EqRsvd3:4; /* Word 2 */ 3697*8f23e9faSHans Rosenfeld uint32_t EqeCntMethod:4; 3698*8f23e9faSHans Rosenfeld uint32_t EqPageSize:8; 3699*8f23e9faSHans Rosenfeld uint32_t EqRsvd2:4; 3700*8f23e9faSHans Rosenfeld uint32_t EqeSize:4; 3701*8f23e9faSHans Rosenfeld uint32_t EqRsvd1:4; 3702*8f23e9faSHans Rosenfeld uint32_t EqPageCnt:4; 3703*8f23e9faSHans Rosenfeld 3704*8f23e9faSHans Rosenfeld uint32_t EqRsvd4:16; /* Word 3 */ 3705*8f23e9faSHans Rosenfeld uint32_t EqeCntMask:16; 3706*8f23e9faSHans Rosenfeld 3707*8f23e9faSHans Rosenfeld uint32_t CqRsvd3:4; /* Word 4 */ 3708*8f23e9faSHans Rosenfeld uint32_t CqeCntMethod:4; 3709*8f23e9faSHans Rosenfeld uint32_t CqPageSize:8; 3710*8f23e9faSHans Rosenfeld uint32_t CQV:2; 3711*8f23e9faSHans Rosenfeld uint32_t CqRsvd2:2; 3712*8f23e9faSHans Rosenfeld uint32_t CqeSize:4; 3713*8f23e9faSHans Rosenfeld uint32_t CqRsvd1:4; 3714*8f23e9faSHans Rosenfeld uint32_t CqPageCnt:4; 3715*8f23e9faSHans Rosenfeld 3716*8f23e9faSHans Rosenfeld uint32_t CqRsvd4:16; /* Word 5 */ 3717*8f23e9faSHans Rosenfeld uint32_t CqeCntMask:16; 3718*8f23e9faSHans Rosenfeld 3719*8f23e9faSHans Rosenfeld uint32_t MqRsvd2:4; /* Word 6 */ 3720*8f23e9faSHans Rosenfeld uint32_t MqeCntMethod:4; 3721*8f23e9faSHans Rosenfeld uint32_t MqPageSize:8; 3722*8f23e9faSHans Rosenfeld uint32_t MQV:2; 3723*8f23e9faSHans Rosenfeld uint32_t MqRsvd1:10; 3724*8f23e9faSHans Rosenfeld uint32_t MqPageCnt:4; 3725*8f23e9faSHans Rosenfeld 3726*8f23e9faSHans Rosenfeld uint32_t MqRsvd3:16; /* Word 7 */ 3727*8f23e9faSHans Rosenfeld uint32_t MqeCntMask:16; 3728*8f23e9faSHans Rosenfeld 3729*8f23e9faSHans Rosenfeld uint32_t WqRsvd3:4; /* Word 8 */ 3730*8f23e9faSHans Rosenfeld uint32_t WqeCntMethod:4; 3731*8f23e9faSHans Rosenfeld uint32_t WqPageSize:8; 3732*8f23e9faSHans Rosenfeld uint32_t WQV:2; 3733*8f23e9faSHans Rosenfeld uint32_t WqeRsvd2:2; 3734*8f23e9faSHans Rosenfeld uint32_t WqeSize:4; 3735*8f23e9faSHans Rosenfeld uint32_t WqRsvd1:4; 3736*8f23e9faSHans Rosenfeld uint32_t WqPageCnt:4; 3737*8f23e9faSHans Rosenfeld 3738*8f23e9faSHans Rosenfeld uint32_t WqRsvd4:16; /* Word 9 */ 3739*8f23e9faSHans Rosenfeld uint32_t WqeCntMask:16; 3740*8f23e9faSHans Rosenfeld 3741*8f23e9faSHans Rosenfeld uint32_t RqRsvd3:4; /* Word 10 */ 3742*8f23e9faSHans Rosenfeld uint32_t RqeCntMethod:4; 3743*8f23e9faSHans Rosenfeld uint32_t RqPageSize:8; 3744*8f23e9faSHans Rosenfeld uint32_t RQV:2; 3745*8f23e9faSHans Rosenfeld uint32_t RqeRsvd2:2; 3746*8f23e9faSHans Rosenfeld uint32_t RqeSize:4; 3747*8f23e9faSHans Rosenfeld uint32_t RqRsvd1:4; 3748*8f23e9faSHans Rosenfeld uint32_t RqPageCnt:4; 3749*8f23e9faSHans Rosenfeld 3750*8f23e9faSHans Rosenfeld uint32_t RqDbWin:4; /* Word 11 */ 3751*8f23e9faSHans Rosenfeld uint32_t RqRsvd4:12; 3752*8f23e9faSHans Rosenfeld uint32_t RqeCntMask:16; 3753*8f23e9faSHans Rosenfeld 3754*8f23e9faSHans Rosenfeld uint32_t Loopback:4; /* Word 12 */ 3755*8f23e9faSHans Rosenfeld uint32_t Rsvd4:12; 3756*8f23e9faSHans Rosenfeld uint32_t PHWQ:1; 3757*8f23e9faSHans Rosenfeld uint32_t PHON:1; 3758*8f23e9faSHans Rosenfeld uint32_t PHOFF:1; 3759*8f23e9faSHans Rosenfeld uint32_t TRIR:1; 3760*8f23e9faSHans Rosenfeld uint32_t TRTY:1; 3761*8f23e9faSHans Rosenfeld uint32_t TCCA:1; 3762*8f23e9faSHans Rosenfeld uint32_t MWQE:1; 3763*8f23e9faSHans Rosenfeld uint32_t ASSI:1; 3764*8f23e9faSHans Rosenfeld uint32_t TERP:1; 3765*8f23e9faSHans Rosenfeld uint32_t TGT:1; 3766*8f23e9faSHans Rosenfeld uint32_t AREG:1; 3767*8f23e9faSHans Rosenfeld uint32_t FBRR:1; 3768*8f23e9faSHans Rosenfeld uint32_t SGLR:1; 3769*8f23e9faSHans Rosenfeld uint32_t HDRR:1; 3770*8f23e9faSHans Rosenfeld uint32_t EXT:1; 3771*8f23e9faSHans Rosenfeld uint32_t FCOE:1; 3772*8f23e9faSHans Rosenfeld 3773*8f23e9faSHans Rosenfeld uint32_t SgeLength; /* Word 13 */ 3774*8f23e9faSHans Rosenfeld 3775*8f23e9faSHans Rosenfeld uint32_t SglRsvd2:8; /* Word 14 */ 3776*8f23e9faSHans Rosenfeld uint32_t SglAlign:8; 3777*8f23e9faSHans Rosenfeld uint32_t SglPageSize:8; 3778*8f23e9faSHans Rosenfeld uint32_t SglRsvd1:4; 3779*8f23e9faSHans Rosenfeld uint32_t SglPageCnt:4; 3780*8f23e9faSHans Rosenfeld 3781*8f23e9faSHans Rosenfeld uint32_t Rsvd5:16; /* Word 15 */ 3782*8f23e9faSHans Rosenfeld uint32_t MinRqSize:16; 3783*8f23e9faSHans Rosenfeld 3784*8f23e9faSHans Rosenfeld uint32_t MaxRqSize; /* Word 16 */ 3785*8f23e9faSHans Rosenfeld 3786*8f23e9faSHans Rosenfeld uint32_t RPIMax:16; 3787*8f23e9faSHans Rosenfeld uint32_t XRIMax:16; /* Word 17 */ 3788*8f23e9faSHans Rosenfeld 3789*8f23e9faSHans Rosenfeld uint32_t VFIMax:16; 3790*8f23e9faSHans Rosenfeld uint32_t VPIMax:16; /* Word 18 */ 3791*8f23e9faSHans Rosenfeld #endif 3792*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3793*8f23e9faSHans Rosenfeld uint32_t ProtocolType:8; /* Word 0 */ 3794*8f23e9faSHans Rosenfeld uint32_t Rsvd1:24; 3795*8f23e9faSHans Rosenfeld 3796*8f23e9faSHans Rosenfeld uint32_t FT:1; /* Word 1 */ 3797*8f23e9faSHans Rosenfeld uint32_t Rsvd2:3; 3798*8f23e9faSHans Rosenfeld uint32_t Revision:4; 3799*8f23e9faSHans Rosenfeld uint32_t SliFamily:4; 3800*8f23e9faSHans Rosenfeld uint32_t IfType:4; 3801*8f23e9faSHans Rosenfeld uint32_t SliHint1:8; 3802*8f23e9faSHans Rosenfeld uint32_t SliHint2:5; 3803*8f23e9faSHans Rosenfeld uint32_t Rsvd3:3; 3804*8f23e9faSHans Rosenfeld 3805*8f23e9faSHans Rosenfeld uint32_t EqPageCnt:4; /* Word 2 */ 3806*8f23e9faSHans Rosenfeld uint32_t EqRsvd1:4; 3807*8f23e9faSHans Rosenfeld uint32_t EqeSize:4; 3808*8f23e9faSHans Rosenfeld uint32_t EqRsvd2:4; 3809*8f23e9faSHans Rosenfeld uint32_t EqPageSize:8; 3810*8f23e9faSHans Rosenfeld uint32_t EqeCntMethod:4; 3811*8f23e9faSHans Rosenfeld uint32_t EqRsvd3:4; 3812*8f23e9faSHans Rosenfeld 3813*8f23e9faSHans Rosenfeld uint32_t EqeCntMask:16; /* Word 3 */ 3814*8f23e9faSHans Rosenfeld uint32_t EqRsvd4:16; 3815*8f23e9faSHans Rosenfeld 3816*8f23e9faSHans Rosenfeld uint32_t CqPageCnt:4; /* Word 4 */ 3817*8f23e9faSHans Rosenfeld uint32_t CqRsvd1:4; 3818*8f23e9faSHans Rosenfeld uint32_t CqeSize:4; 3819*8f23e9faSHans Rosenfeld uint32_t CqRsvd2:2; 3820*8f23e9faSHans Rosenfeld uint32_t CQV:2; 3821*8f23e9faSHans Rosenfeld uint32_t CqPageSize:8; 3822*8f23e9faSHans Rosenfeld uint32_t CqeCntMethod:4; 3823*8f23e9faSHans Rosenfeld uint32_t CqRsvd3:4; 3824*8f23e9faSHans Rosenfeld 3825*8f23e9faSHans Rosenfeld uint32_t CqeCntMask:16; /* Word 5 */ 3826*8f23e9faSHans Rosenfeld uint32_t CqRsvd4:16; 3827*8f23e9faSHans Rosenfeld 3828*8f23e9faSHans Rosenfeld uint32_t MqPageCnt:4; /* Word 6 */ 3829*8f23e9faSHans Rosenfeld uint32_t MqRsvd1:10; 3830*8f23e9faSHans Rosenfeld uint32_t MQV:2; 3831*8f23e9faSHans Rosenfeld uint32_t MqPageSize:8; 3832*8f23e9faSHans Rosenfeld uint32_t MqeCntMethod:4; 3833*8f23e9faSHans Rosenfeld uint32_t MqRsvd2:4; 3834*8f23e9faSHans Rosenfeld 3835*8f23e9faSHans Rosenfeld uint32_t MqeCntMask:16; /* Word 7 */ 3836*8f23e9faSHans Rosenfeld uint32_t MqRsvd3:16; 3837*8f23e9faSHans Rosenfeld 3838*8f23e9faSHans Rosenfeld uint32_t WqPageCnt:4; /* Word 8 */ 3839*8f23e9faSHans Rosenfeld uint32_t WqRsvd1:4; 3840*8f23e9faSHans Rosenfeld uint32_t WqeSize:4; 3841*8f23e9faSHans Rosenfeld uint32_t WqeRsvd2:2; 3842*8f23e9faSHans Rosenfeld uint32_t WQV:2; 3843*8f23e9faSHans Rosenfeld uint32_t WqPageSize:8; 3844*8f23e9faSHans Rosenfeld uint32_t WqeCntMethod:4; 3845*8f23e9faSHans Rosenfeld uint32_t WqRsvd3:4; 3846*8f23e9faSHans Rosenfeld 3847*8f23e9faSHans Rosenfeld uint32_t WqeCntMask:16; /* Word 9 */ 3848*8f23e9faSHans Rosenfeld uint32_t WqRsvd4:16; 3849*8f23e9faSHans Rosenfeld 3850*8f23e9faSHans Rosenfeld uint32_t RqPageCnt:4; /* Word 10 */ 3851*8f23e9faSHans Rosenfeld uint32_t RqRsvd1:4; 3852*8f23e9faSHans Rosenfeld uint32_t RqeSize:4; 3853*8f23e9faSHans Rosenfeld uint32_t RqeRsvd2:2; 3854*8f23e9faSHans Rosenfeld uint32_t RQV:2; 3855*8f23e9faSHans Rosenfeld uint32_t RqPageSize:8; 3856*8f23e9faSHans Rosenfeld uint32_t RqeCntMethod:4; 3857*8f23e9faSHans Rosenfeld uint32_t RqRsvd3:4; 3858*8f23e9faSHans Rosenfeld 3859*8f23e9faSHans Rosenfeld uint32_t RqeCntMask:16; /* Word 11 */ 3860*8f23e9faSHans Rosenfeld uint32_t RqRsvd4:12; 3861*8f23e9faSHans Rosenfeld uint32_t RqDbWin:4; 3862*8f23e9faSHans Rosenfeld 3863*8f23e9faSHans Rosenfeld uint32_t FCOE:1; /* Word 12 */ 3864*8f23e9faSHans Rosenfeld uint32_t EXT:1; 3865*8f23e9faSHans Rosenfeld uint32_t HDRR:1; 3866*8f23e9faSHans Rosenfeld uint32_t SGLR:1; 3867*8f23e9faSHans Rosenfeld uint32_t FBRR:1; 3868*8f23e9faSHans Rosenfeld uint32_t AREG:1; 3869*8f23e9faSHans Rosenfeld uint32_t TGT:1; 3870*8f23e9faSHans Rosenfeld uint32_t TERP:1; 3871*8f23e9faSHans Rosenfeld uint32_t ASSI:1; 3872*8f23e9faSHans Rosenfeld uint32_t MWQE:1; 3873*8f23e9faSHans Rosenfeld uint32_t TCCA:1; 3874*8f23e9faSHans Rosenfeld uint32_t TRTY:1; 3875*8f23e9faSHans Rosenfeld uint32_t TRIR:1; 3876*8f23e9faSHans Rosenfeld uint32_t PHOFF:1; 3877*8f23e9faSHans Rosenfeld uint32_t PHON:1; 3878*8f23e9faSHans Rosenfeld uint32_t PHWQ:1; 3879*8f23e9faSHans Rosenfeld uint32_t Rsvd4:12; 3880*8f23e9faSHans Rosenfeld uint32_t Loopback:4; 3881*8f23e9faSHans Rosenfeld 3882*8f23e9faSHans Rosenfeld uint32_t SgeLength; /* Word 13 */ 3883*8f23e9faSHans Rosenfeld 3884*8f23e9faSHans Rosenfeld uint32_t SglPageCnt:4; /* Word 14 */ 3885*8f23e9faSHans Rosenfeld uint32_t SglRsvd1:4; 3886*8f23e9faSHans Rosenfeld uint32_t SglPageSize:8; 3887*8f23e9faSHans Rosenfeld uint32_t SglAlign:8; 3888*8f23e9faSHans Rosenfeld uint32_t SglRsvd2:8; 3889*8f23e9faSHans Rosenfeld 3890*8f23e9faSHans Rosenfeld uint32_t MinRqSize:16; /* Word 15 */ 3891*8f23e9faSHans Rosenfeld uint32_t Rsvd5:16; 3892*8f23e9faSHans Rosenfeld 3893*8f23e9faSHans Rosenfeld uint32_t MaxRqSize; /* Word 16 */ 3894*8f23e9faSHans Rosenfeld 3895*8f23e9faSHans Rosenfeld uint32_t XRIMax:16; /* Word 17 */ 3896*8f23e9faSHans Rosenfeld uint32_t RPIMax:16; 3897*8f23e9faSHans Rosenfeld 3898*8f23e9faSHans Rosenfeld uint32_t VPIMax:16; /* Word 18 */ 3899*8f23e9faSHans Rosenfeld uint32_t VFIMax:16; 3900*8f23e9faSHans Rosenfeld #endif 3901*8f23e9faSHans Rosenfeld 3902*8f23e9faSHans Rosenfeld uint32_t Rsvd6; /* Word 19 */ 3903*8f23e9faSHans Rosenfeld 3904*8f23e9faSHans Rosenfeld } sli_params_t; 3905*8f23e9faSHans Rosenfeld 3906*8f23e9faSHans Rosenfeld /* SliFamily values */ 3907*8f23e9faSHans Rosenfeld #define SLI_FAMILY_BE2 0x0 3908*8f23e9faSHans Rosenfeld #define SLI_FAMILY_BE3 0x1 3909*8f23e9faSHans Rosenfeld #define SLI_FAMILY_LANCER_A 0xA 3910*8f23e9faSHans Rosenfeld #define SLI_FAMILY_LANCER_B 0xB 3911*8f23e9faSHans Rosenfeld 3912*8f23e9faSHans Rosenfeld 3913*8f23e9faSHans Rosenfeld 3914*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_SLI4_PARAMS */ 3915*8f23e9faSHans Rosenfeld typedef struct 3916*8f23e9faSHans Rosenfeld { 3917*8f23e9faSHans Rosenfeld union 3918*8f23e9faSHans Rosenfeld { 3919*8f23e9faSHans Rosenfeld struct 3920*8f23e9faSHans Rosenfeld { 3921*8f23e9faSHans Rosenfeld uint32_t Rsvd1; 3922*8f23e9faSHans Rosenfeld } request; 3923*8f23e9faSHans Rosenfeld 3924*8f23e9faSHans Rosenfeld struct 3925*8f23e9faSHans Rosenfeld { 3926*8f23e9faSHans Rosenfeld sli_params_t param; 3927*8f23e9faSHans Rosenfeld } response; 3928*8f23e9faSHans Rosenfeld } params; 3929*8f23e9faSHans Rosenfeld 3930*8f23e9faSHans Rosenfeld } IOCTL_COMMON_SLI4_PARAMS; 3931*8f23e9faSHans Rosenfeld 3932*8f23e9faSHans Rosenfeld 3933*8f23e9faSHans Rosenfeld #define MAX_EXTENTS 16 /* 1 to 104 */ 3934*8f23e9faSHans Rosenfeld 3935*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_EXTENTS */ 3936*8f23e9faSHans Rosenfeld typedef struct 3937*8f23e9faSHans Rosenfeld { 3938*8f23e9faSHans Rosenfeld union 3939*8f23e9faSHans Rosenfeld { 3940*8f23e9faSHans Rosenfeld struct 3941*8f23e9faSHans Rosenfeld { 3942*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3943*8f23e9faSHans Rosenfeld uint16_t RscCnt; 3944*8f23e9faSHans Rosenfeld uint16_t RscType; 3945*8f23e9faSHans Rosenfeld #endif 3946*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3947*8f23e9faSHans Rosenfeld uint16_t RscType; 3948*8f23e9faSHans Rosenfeld uint16_t RscCnt; 3949*8f23e9faSHans Rosenfeld #endif 3950*8f23e9faSHans Rosenfeld } request; 3951*8f23e9faSHans Rosenfeld 3952*8f23e9faSHans Rosenfeld struct 3953*8f23e9faSHans Rosenfeld { 3954*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 3955*8f23e9faSHans Rosenfeld uint16_t ExtentSize; 3956*8f23e9faSHans Rosenfeld uint16_t ExtentCnt; 3957*8f23e9faSHans Rosenfeld #endif 3958*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 3959*8f23e9faSHans Rosenfeld uint16_t ExtentCnt; 3960*8f23e9faSHans Rosenfeld uint16_t ExtentSize; 3961*8f23e9faSHans Rosenfeld #endif 3962*8f23e9faSHans Rosenfeld 3963*8f23e9faSHans Rosenfeld uint16_t RscId[MAX_EXTENTS]; 3964*8f23e9faSHans Rosenfeld 3965*8f23e9faSHans Rosenfeld } response; 3966*8f23e9faSHans Rosenfeld } params; 3967*8f23e9faSHans Rosenfeld 3968*8f23e9faSHans Rosenfeld } IOCTL_COMMON_EXTENTS; 3969*8f23e9faSHans Rosenfeld 3970*8f23e9faSHans Rosenfeld /* RscType */ 3971*8f23e9faSHans Rosenfeld #define RSC_TYPE_FCOE_VFI 0x20 3972*8f23e9faSHans Rosenfeld #define RSC_TYPE_FCOE_VPI 0x21 3973*8f23e9faSHans Rosenfeld #define RSC_TYPE_FCOE_RPI 0x22 3974*8f23e9faSHans Rosenfeld #define RSC_TYPE_FCOE_XRI 0x23 3975*8f23e9faSHans Rosenfeld 3976*8f23e9faSHans Rosenfeld 3977*8f23e9faSHans Rosenfeld 397882527734SSukumar Swaminathan /* IOCTL_COMMON_CQ_CREATE */ 397982527734SSukumar Swaminathan typedef struct 398082527734SSukumar Swaminathan { 398182527734SSukumar Swaminathan union 398282527734SSukumar Swaminathan { 398382527734SSukumar Swaminathan struct 398482527734SSukumar Swaminathan { 398582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 398682527734SSukumar Swaminathan uint16_t Rsvd1; 398782527734SSukumar Swaminathan uint16_t NumPages; 398882527734SSukumar Swaminathan #endif 398982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 399082527734SSukumar Swaminathan uint16_t NumPages; 399182527734SSukumar Swaminathan uint16_t Rsvd1; 399282527734SSukumar Swaminathan #endif 399382527734SSukumar Swaminathan CQ_CONTEXT CQContext; 399482527734SSukumar Swaminathan BE_PHYS_ADDR Pages[4]; 399582527734SSukumar Swaminathan } request; 399682527734SSukumar Swaminathan 399782527734SSukumar Swaminathan struct 399882527734SSukumar Swaminathan { 399982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 400082527734SSukumar Swaminathan uint16_t Rsvd1; 400182527734SSukumar Swaminathan uint16_t CQId; 400282527734SSukumar Swaminathan #endif 400382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 400482527734SSukumar Swaminathan uint16_t CQId; 400582527734SSukumar Swaminathan uint16_t Rsvd1; 400682527734SSukumar Swaminathan #endif 400782527734SSukumar Swaminathan } response; 400882527734SSukumar Swaminathan } params; 400982527734SSukumar Swaminathan 401082527734SSukumar Swaminathan } IOCTL_COMMON_CQ_CREATE; 401182527734SSukumar Swaminathan 401282527734SSukumar Swaminathan 4013*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_CQ_CREATE_V2 */ 4014*8f23e9faSHans Rosenfeld typedef struct 4015*8f23e9faSHans Rosenfeld { 4016*8f23e9faSHans Rosenfeld union 4017*8f23e9faSHans Rosenfeld { 4018*8f23e9faSHans Rosenfeld struct 4019*8f23e9faSHans Rosenfeld { 4020*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4021*8f23e9faSHans Rosenfeld uint8_t Rsvd1; 4022*8f23e9faSHans Rosenfeld uint8_t PageSize; 4023*8f23e9faSHans Rosenfeld uint16_t NumPages; 4024*8f23e9faSHans Rosenfeld #endif 4025*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4026*8f23e9faSHans Rosenfeld uint16_t NumPages; 4027*8f23e9faSHans Rosenfeld uint8_t PageSize; 4028*8f23e9faSHans Rosenfeld uint8_t Rsvd1; 4029*8f23e9faSHans Rosenfeld #endif 4030*8f23e9faSHans Rosenfeld CQ_CONTEXT_V2 CQContext; 4031*8f23e9faSHans Rosenfeld BE_PHYS_ADDR Pages[8]; 4032*8f23e9faSHans Rosenfeld } request; 4033*8f23e9faSHans Rosenfeld 4034*8f23e9faSHans Rosenfeld struct 4035*8f23e9faSHans Rosenfeld { 4036*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4037*8f23e9faSHans Rosenfeld uint16_t Rsvd1; 4038*8f23e9faSHans Rosenfeld uint16_t CQId; 4039*8f23e9faSHans Rosenfeld #endif 4040*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4041*8f23e9faSHans Rosenfeld uint16_t CQId; 4042*8f23e9faSHans Rosenfeld uint16_t Rsvd1; 4043*8f23e9faSHans Rosenfeld #endif 4044*8f23e9faSHans Rosenfeld } response; 4045*8f23e9faSHans Rosenfeld } params; 4046*8f23e9faSHans Rosenfeld 4047*8f23e9faSHans Rosenfeld } IOCTL_COMMON_CQ_CREATE_V2; 4048*8f23e9faSHans Rosenfeld 4049*8f23e9faSHans Rosenfeld #define CQ_PAGE_SIZE_4K 0x01 4050*8f23e9faSHans Rosenfeld #define CQ_PAGE_SIZE_8K 0x02 4051*8f23e9faSHans Rosenfeld #define CQ_PAGE_SIZE_16K 0x04 4052*8f23e9faSHans Rosenfeld #define CQ_PAGE_SIZE_32K 0x08 4053*8f23e9faSHans Rosenfeld #define CQ_PAGE_SIZE_64K 0x10 4054*8f23e9faSHans Rosenfeld 4055*8f23e9faSHans Rosenfeld 4056*8f23e9faSHans Rosenfeld 405782527734SSukumar Swaminathan /* IOCTL_COMMON_MQ_CREATE */ 405882527734SSukumar Swaminathan typedef struct 405982527734SSukumar Swaminathan { 406082527734SSukumar Swaminathan union 406182527734SSukumar Swaminathan { 406282527734SSukumar Swaminathan struct 406382527734SSukumar Swaminathan { 406482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 406582527734SSukumar Swaminathan uint16_t Rsvd1; 406682527734SSukumar Swaminathan uint16_t NumPages; 406782527734SSukumar Swaminathan #endif 406882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 406982527734SSukumar Swaminathan uint16_t NumPages; 407082527734SSukumar Swaminathan uint16_t Rsvd1; 407182527734SSukumar Swaminathan #endif 407282527734SSukumar Swaminathan MQ_CONTEXT MQContext; 407382527734SSukumar Swaminathan BE_PHYS_ADDR Pages[8]; 407482527734SSukumar Swaminathan } request; 407582527734SSukumar Swaminathan 407682527734SSukumar Swaminathan struct 407782527734SSukumar Swaminathan { 407882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 407982527734SSukumar Swaminathan uint16_t Rsvd1; 408082527734SSukumar Swaminathan uint16_t MQId; 408182527734SSukumar Swaminathan #endif 408282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 408382527734SSukumar Swaminathan uint16_t MQId; 408482527734SSukumar Swaminathan uint16_t Rsvd1; 408582527734SSukumar Swaminathan #endif 408682527734SSukumar Swaminathan } response; 408782527734SSukumar Swaminathan } params; 408882527734SSukumar Swaminathan 408982527734SSukumar Swaminathan } IOCTL_COMMON_MQ_CREATE; 409082527734SSukumar Swaminathan 409182527734SSukumar Swaminathan 4092*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_MQ_CREATE_EXT */ 4093a9800bebSGarrett D'Amore typedef struct 4094a9800bebSGarrett D'Amore { 4095a9800bebSGarrett D'Amore union 4096a9800bebSGarrett D'Amore { 4097a9800bebSGarrett D'Amore struct 4098a9800bebSGarrett D'Amore { 4099a9800bebSGarrett D'Amore #ifdef EMLXS_BIG_ENDIAN 4100a9800bebSGarrett D'Amore uint16_t rsvd0; 4101a9800bebSGarrett D'Amore uint16_t num_pages; 4102a9800bebSGarrett D'Amore #endif 4103a9800bebSGarrett D'Amore #ifdef EMLXS_LITTLE_ENDIAN 4104a9800bebSGarrett D'Amore uint16_t num_pages; 4105a9800bebSGarrett D'Amore uint16_t rsvd0; 4106a9800bebSGarrett D'Amore #endif 4107a9800bebSGarrett D'Amore uint32_t async_event_bitmap; 4108a9800bebSGarrett D'Amore 4109*8f23e9faSHans Rosenfeld #define ASYNC_LINK_EVENT 0x00000002 4110*8f23e9faSHans Rosenfeld #define ASYNC_FCF_EVENT 0x00000004 4111*8f23e9faSHans Rosenfeld #define ASYNC_DCBX_EVENT 0x00000008 4112*8f23e9faSHans Rosenfeld #define ASYNC_iSCSI_EVENT 0x00000010 4113*8f23e9faSHans Rosenfeld #define ASYNC_GROUP5_EVENT 0x00000020 4114*8f23e9faSHans Rosenfeld #define ASYNC_FC_EVENT 0x00010000 4115*8f23e9faSHans Rosenfeld #define ASYNC_PORT_EVENT 0x00020000 4116*8f23e9faSHans Rosenfeld #define ASYNC_VF_EVENT 0x00040000 4117*8f23e9faSHans Rosenfeld #define ASYNC_MR_EVENT 0x00080000 4118a9800bebSGarrett D'Amore 4119a9800bebSGarrett D'Amore MQ_CONTEXT context; 4120a9800bebSGarrett D'Amore BE_PHYS_ADDR pages[8]; 4121a9800bebSGarrett D'Amore } request; 4122a9800bebSGarrett D'Amore 4123a9800bebSGarrett D'Amore struct 4124a9800bebSGarrett D'Amore { 4125a9800bebSGarrett D'Amore #ifdef EMLXS_BIG_ENDIAN 4126a9800bebSGarrett D'Amore uint16_t rsvd0; 4127*8f23e9faSHans Rosenfeld uint16_t MQId; 4128a9800bebSGarrett D'Amore #endif 4129a9800bebSGarrett D'Amore #ifdef EMLXS_LITTLE_ENDIAN 4130*8f23e9faSHans Rosenfeld uint16_t MQId; 4131a9800bebSGarrett D'Amore uint16_t rsvd0; 4132a9800bebSGarrett D'Amore #endif 4133a9800bebSGarrett D'Amore } response; 4134a9800bebSGarrett D'Amore 4135a9800bebSGarrett D'Amore } params; 4136a9800bebSGarrett D'Amore 4137*8f23e9faSHans Rosenfeld } IOCTL_COMMON_MQ_CREATE_EXT; 4138*8f23e9faSHans Rosenfeld 4139*8f23e9faSHans Rosenfeld 4140*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_MQ_CREATE_EXT_V1 */ 4141*8f23e9faSHans Rosenfeld typedef struct 4142*8f23e9faSHans Rosenfeld { 4143*8f23e9faSHans Rosenfeld union 4144*8f23e9faSHans Rosenfeld { 4145*8f23e9faSHans Rosenfeld struct 4146*8f23e9faSHans Rosenfeld { 4147*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4148*8f23e9faSHans Rosenfeld uint16_t CQId; 4149*8f23e9faSHans Rosenfeld uint16_t num_pages; 4150*8f23e9faSHans Rosenfeld #endif 4151*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4152*8f23e9faSHans Rosenfeld uint16_t num_pages; 4153*8f23e9faSHans Rosenfeld uint16_t CQId; 4154*8f23e9faSHans Rosenfeld #endif 4155*8f23e9faSHans Rosenfeld uint32_t async_event_bitmap; 4156*8f23e9faSHans Rosenfeld 4157*8f23e9faSHans Rosenfeld MQ_CONTEXT_V1 context; 4158*8f23e9faSHans Rosenfeld BE_PHYS_ADDR pages[8]; 4159*8f23e9faSHans Rosenfeld } request; 4160*8f23e9faSHans Rosenfeld 4161*8f23e9faSHans Rosenfeld struct 4162*8f23e9faSHans Rosenfeld { 4163*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4164*8f23e9faSHans Rosenfeld uint16_t rsvd0; 4165*8f23e9faSHans Rosenfeld uint16_t MQId; 4166*8f23e9faSHans Rosenfeld #endif 4167*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4168*8f23e9faSHans Rosenfeld uint16_t MQId; 4169*8f23e9faSHans Rosenfeld uint16_t rsvd0; 4170*8f23e9faSHans Rosenfeld #endif 4171*8f23e9faSHans Rosenfeld } response; 4172*8f23e9faSHans Rosenfeld 4173*8f23e9faSHans Rosenfeld } params; 4174*8f23e9faSHans Rosenfeld 4175*8f23e9faSHans Rosenfeld } IOCTL_COMMON_MQ_CREATE_EXT_V1; 4176a9800bebSGarrett D'Amore 4177a9800bebSGarrett D'Amore 417882527734SSukumar Swaminathan /* IOCTL_FCOE_RQ_CREATE */ 417982527734SSukumar Swaminathan typedef struct 418082527734SSukumar Swaminathan { 418182527734SSukumar Swaminathan union 418282527734SSukumar Swaminathan { 418382527734SSukumar Swaminathan struct 418482527734SSukumar Swaminathan { 418582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 4186*8f23e9faSHans Rosenfeld uint16_t Rsvd0; 418782527734SSukumar Swaminathan uint16_t NumPages; 418882527734SSukumar Swaminathan #endif 418982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 419082527734SSukumar Swaminathan uint16_t NumPages; 4191*8f23e9faSHans Rosenfeld uint16_t Rsvd0; 419282527734SSukumar Swaminathan #endif 419382527734SSukumar Swaminathan RQ_CONTEXT RQContext; 419482527734SSukumar Swaminathan BE_PHYS_ADDR Pages[8]; 419582527734SSukumar Swaminathan } request; 419682527734SSukumar Swaminathan 419782527734SSukumar Swaminathan struct 419882527734SSukumar Swaminathan { 419982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 420082527734SSukumar Swaminathan uint16_t Rsvd1; 420182527734SSukumar Swaminathan uint16_t RQId; 420282527734SSukumar Swaminathan #endif 420382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 420482527734SSukumar Swaminathan uint16_t RQId; 420582527734SSukumar Swaminathan uint16_t Rsvd1; 420682527734SSukumar Swaminathan #endif 420782527734SSukumar Swaminathan } response; 420882527734SSukumar Swaminathan 420982527734SSukumar Swaminathan } params; 421082527734SSukumar Swaminathan 421182527734SSukumar Swaminathan } IOCTL_FCOE_RQ_CREATE; 421282527734SSukumar Swaminathan 421382527734SSukumar Swaminathan 4214*8f23e9faSHans Rosenfeld /* IOCTL_FCOE_RQ_CREATE_V1 */ 4215*8f23e9faSHans Rosenfeld typedef struct 4216*8f23e9faSHans Rosenfeld { 4217*8f23e9faSHans Rosenfeld union 4218*8f23e9faSHans Rosenfeld { 4219*8f23e9faSHans Rosenfeld struct 4220*8f23e9faSHans Rosenfeld { 4221*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4222*8f23e9faSHans Rosenfeld uint32_t DNB:1; 4223*8f23e9faSHans Rosenfeld uint32_t DFD:1; 4224*8f23e9faSHans Rosenfeld uint32_t DIM:1; 4225*8f23e9faSHans Rosenfeld uint32_t Rsvd0:13; 4226*8f23e9faSHans Rosenfeld uint32_t NumPages:16; 4227*8f23e9faSHans Rosenfeld #endif 4228*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4229*8f23e9faSHans Rosenfeld uint32_t NumPages:16; 4230*8f23e9faSHans Rosenfeld uint32_t Rsvd0:13; 4231*8f23e9faSHans Rosenfeld uint32_t DIM:1; 4232*8f23e9faSHans Rosenfeld uint32_t DFD:1; 4233*8f23e9faSHans Rosenfeld uint32_t DNB:1; 4234*8f23e9faSHans Rosenfeld #endif 4235*8f23e9faSHans Rosenfeld RQ_CONTEXT_V1 RQContext; 4236*8f23e9faSHans Rosenfeld BE_PHYS_ADDR Pages[8]; 4237*8f23e9faSHans Rosenfeld } request; 4238*8f23e9faSHans Rosenfeld 4239*8f23e9faSHans Rosenfeld struct 4240*8f23e9faSHans Rosenfeld { 4241*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4242*8f23e9faSHans Rosenfeld uint16_t Rsvd1; 4243*8f23e9faSHans Rosenfeld uint16_t RQId; 4244*8f23e9faSHans Rosenfeld #endif 4245*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4246*8f23e9faSHans Rosenfeld uint16_t RQId; 4247*8f23e9faSHans Rosenfeld uint16_t Rsvd1; 4248*8f23e9faSHans Rosenfeld #endif 4249*8f23e9faSHans Rosenfeld } response; 4250*8f23e9faSHans Rosenfeld 4251*8f23e9faSHans Rosenfeld } params; 4252*8f23e9faSHans Rosenfeld 4253*8f23e9faSHans Rosenfeld } IOCTL_FCOE_RQ_CREATE_V1; 4254*8f23e9faSHans Rosenfeld 4255*8f23e9faSHans Rosenfeld 425682527734SSukumar Swaminathan /* IOCTL_FCOE_WQ_CREATE */ 425782527734SSukumar Swaminathan typedef struct 425882527734SSukumar Swaminathan { 425982527734SSukumar Swaminathan union 426082527734SSukumar Swaminathan { 426182527734SSukumar Swaminathan struct 426282527734SSukumar Swaminathan { 426382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 426482527734SSukumar Swaminathan uint16_t CQId; 426582527734SSukumar Swaminathan uint16_t NumPages; 426682527734SSukumar Swaminathan #endif 426782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 426882527734SSukumar Swaminathan uint16_t NumPages; 426982527734SSukumar Swaminathan uint16_t CQId; 427082527734SSukumar Swaminathan #endif 427182527734SSukumar Swaminathan BE_PHYS_ADDR Pages[4]; 427282527734SSukumar Swaminathan } request; 427382527734SSukumar Swaminathan 427482527734SSukumar Swaminathan struct 427582527734SSukumar Swaminathan { 427682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 427782527734SSukumar Swaminathan uint16_t Rsvd0; 427882527734SSukumar Swaminathan uint16_t WQId; 427982527734SSukumar Swaminathan #endif 428082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 428182527734SSukumar Swaminathan uint16_t WQId; 428282527734SSukumar Swaminathan uint16_t Rsvd0; 428382527734SSukumar Swaminathan #endif 428482527734SSukumar Swaminathan } response; 428582527734SSukumar Swaminathan 428682527734SSukumar Swaminathan } params; 428782527734SSukumar Swaminathan 428882527734SSukumar Swaminathan } IOCTL_FCOE_WQ_CREATE; 428982527734SSukumar Swaminathan 429082527734SSukumar Swaminathan 4291*8f23e9faSHans Rosenfeld /* IOCTL_FCOE_WQ_CREATE_V1 */ 4292*8f23e9faSHans Rosenfeld typedef struct 4293*8f23e9faSHans Rosenfeld { 4294*8f23e9faSHans Rosenfeld union 4295*8f23e9faSHans Rosenfeld { 4296*8f23e9faSHans Rosenfeld struct 4297*8f23e9faSHans Rosenfeld { 4298*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4299*8f23e9faSHans Rosenfeld uint16_t CQId; 4300*8f23e9faSHans Rosenfeld uint16_t NumPages; 4301*8f23e9faSHans Rosenfeld 4302*8f23e9faSHans Rosenfeld uint32_t WqeCnt:16; 4303*8f23e9faSHans Rosenfeld uint32_t Rsvd1:4; 4304*8f23e9faSHans Rosenfeld uint32_t WqeSize:4; 4305*8f23e9faSHans Rosenfeld uint32_t PageSize:8; 4306*8f23e9faSHans Rosenfeld #endif 4307*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4308*8f23e9faSHans Rosenfeld uint16_t NumPages; 4309*8f23e9faSHans Rosenfeld uint16_t CQId; 4310*8f23e9faSHans Rosenfeld 4311*8f23e9faSHans Rosenfeld uint32_t PageSize:8; 4312*8f23e9faSHans Rosenfeld uint32_t WqeSize:4; 4313*8f23e9faSHans Rosenfeld uint32_t Rsvd1:4; 4314*8f23e9faSHans Rosenfeld uint32_t WqeCnt:16; 4315*8f23e9faSHans Rosenfeld #endif 4316*8f23e9faSHans Rosenfeld uint32_t Rsvd:2; 4317*8f23e9faSHans Rosenfeld BE_PHYS_ADDR Pages[4]; 4318*8f23e9faSHans Rosenfeld } request; 4319*8f23e9faSHans Rosenfeld 4320*8f23e9faSHans Rosenfeld struct 4321*8f23e9faSHans Rosenfeld { 4322*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN 4323*8f23e9faSHans Rosenfeld uint16_t Rsvd0; 4324*8f23e9faSHans Rosenfeld uint16_t WQId; 4325*8f23e9faSHans Rosenfeld #endif 4326*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN 4327*8f23e9faSHans Rosenfeld uint16_t WQId; 4328*8f23e9faSHans Rosenfeld uint16_t Rsvd0; 4329*8f23e9faSHans Rosenfeld #endif 4330*8f23e9faSHans Rosenfeld } response; 4331*8f23e9faSHans Rosenfeld 4332*8f23e9faSHans Rosenfeld } params; 4333*8f23e9faSHans Rosenfeld 4334*8f23e9faSHans Rosenfeld } IOCTL_FCOE_WQ_CREATE_V1; 4335*8f23e9faSHans Rosenfeld 4336*8f23e9faSHans Rosenfeld /* WqeSize */ 4337*8f23e9faSHans Rosenfeld #define WQE_SIZE_64_BYTES 0x05 4338*8f23e9faSHans Rosenfeld #define WQE_SIZE_128_BYTES 0x06 4339*8f23e9faSHans Rosenfeld 4340*8f23e9faSHans Rosenfeld /* PageSize */ 4341*8f23e9faSHans Rosenfeld #define WQ_PAGE_SIZE_4K 0x01 4342*8f23e9faSHans Rosenfeld #define WQ_PAGE_SIZE_8K 0x02 4343*8f23e9faSHans Rosenfeld #define WQ_PAGE_SIZE_16K 0x04 4344*8f23e9faSHans Rosenfeld #define WQ_PAGE_SIZE_32K 0x08 4345*8f23e9faSHans Rosenfeld #define WQ_PAGE_SIZE_64K 0x10 4346*8f23e9faSHans Rosenfeld 4347*8f23e9faSHans Rosenfeld 4348*8f23e9faSHans Rosenfeld 434982527734SSukumar Swaminathan /* IOCTL_FCOE_CFG_POST_SGL_PAGES */ 435082527734SSukumar Swaminathan typedef struct _FCOE_SGL_PAGES 435182527734SSukumar Swaminathan { 435282527734SSukumar Swaminathan BE_PHYS_ADDR sgl_page0; /* 1st page per XRI */ 435382527734SSukumar Swaminathan BE_PHYS_ADDR sgl_page1; /* 2nd page per XRI */ 435482527734SSukumar Swaminathan 435582527734SSukumar Swaminathan } FCOE_SGL_PAGES; 435682527734SSukumar Swaminathan 435782527734SSukumar Swaminathan typedef struct 435882527734SSukumar Swaminathan { 435982527734SSukumar Swaminathan union 436082527734SSukumar Swaminathan { 436182527734SSukumar Swaminathan struct 436282527734SSukumar Swaminathan { 436382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 436482527734SSukumar Swaminathan uint16_t xri_count; 436582527734SSukumar Swaminathan uint16_t xri_start; 436682527734SSukumar Swaminathan #endif 436782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 436882527734SSukumar Swaminathan uint16_t xri_start; 436982527734SSukumar Swaminathan uint16_t xri_count; 437082527734SSukumar Swaminathan #endif 437182527734SSukumar Swaminathan FCOE_SGL_PAGES pages[1]; 437282527734SSukumar Swaminathan } request; 437382527734SSukumar Swaminathan 437482527734SSukumar Swaminathan struct 437582527734SSukumar Swaminathan { 437682527734SSukumar Swaminathan uint32_t rsvd0; 437782527734SSukumar Swaminathan } response; 437882527734SSukumar Swaminathan 437982527734SSukumar Swaminathan } params; 438082527734SSukumar Swaminathan 438182527734SSukumar Swaminathan uint32_t rsvd0[2]; 438282527734SSukumar Swaminathan 438382527734SSukumar Swaminathan } IOCTL_FCOE_CFG_POST_SGL_PAGES; 438482527734SSukumar Swaminathan 438582527734SSukumar Swaminathan 438682527734SSukumar Swaminathan /* IOCTL_FCOE_POST_HDR_TEMPLATES */ 438782527734SSukumar Swaminathan typedef struct _IOCTL_FCOE_POST_HDR_TEMPLATES 438882527734SSukumar Swaminathan { 438982527734SSukumar Swaminathan union 439082527734SSukumar Swaminathan { 439182527734SSukumar Swaminathan struct 439282527734SSukumar Swaminathan { 439382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 439482527734SSukumar Swaminathan uint16_t num_pages; 4395*8f23e9faSHans Rosenfeld uint16_t rpi_offset; 439682527734SSukumar Swaminathan #endif 439782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 4398*8f23e9faSHans Rosenfeld uint16_t rpi_offset; 439982527734SSukumar Swaminathan uint16_t num_pages; 440082527734SSukumar Swaminathan #endif 440182527734SSukumar Swaminathan BE_PHYS_ADDR pages[32]; 440282527734SSukumar Swaminathan 440382527734SSukumar Swaminathan }request; 440482527734SSukumar Swaminathan 440582527734SSukumar Swaminathan }params; 440682527734SSukumar Swaminathan 440782527734SSukumar Swaminathan } IOCTL_FCOE_POST_HDR_TEMPLATES; 440882527734SSukumar Swaminathan 440982527734SSukumar Swaminathan 441082527734SSukumar Swaminathan 441182527734SSukumar Swaminathan #define EMLXS_IOCTL_DCBX_MODE_CEE 0 /* Mapped to FIP mode */ 441282527734SSukumar Swaminathan #define EMLXS_IOCTL_DCBX_MODE_CIN 1 /* Mapped to nonFIP mode */ 441382527734SSukumar Swaminathan 441482527734SSukumar Swaminathan /* IOCTL_DCBX_GET_DCBX_MODE */ 441582527734SSukumar Swaminathan typedef struct _IOCTL_DCBX_GET_DCBX_MODE 441682527734SSukumar Swaminathan { 441782527734SSukumar Swaminathan union 441882527734SSukumar Swaminathan { 441982527734SSukumar Swaminathan struct 442082527734SSukumar Swaminathan { 442182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 442282527734SSukumar Swaminathan uint8_t rsvd0[3]; 442382527734SSukumar Swaminathan uint8_t port_num; 442482527734SSukumar Swaminathan #endif 442582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 442682527734SSukumar Swaminathan uint8_t port_num; 442782527734SSukumar Swaminathan uint8_t rsvd0[3]; 442882527734SSukumar Swaminathan #endif 442982527734SSukumar Swaminathan } request; 443082527734SSukumar Swaminathan 443182527734SSukumar Swaminathan struct 443282527734SSukumar Swaminathan { 443382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 443482527734SSukumar Swaminathan uint8_t rsvd1[3]; 443582527734SSukumar Swaminathan uint8_t dcbx_mode; 443682527734SSukumar Swaminathan #endif 443782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 443882527734SSukumar Swaminathan uint8_t dcbx_mode; 443982527734SSukumar Swaminathan uint8_t rsvd1[3]; 444082527734SSukumar Swaminathan #endif 444182527734SSukumar Swaminathan } response; 444282527734SSukumar Swaminathan 444382527734SSukumar Swaminathan } params; 444482527734SSukumar Swaminathan 444582527734SSukumar Swaminathan } IOCTL_DCBX_GET_DCBX_MODE; 444682527734SSukumar Swaminathan 444782527734SSukumar Swaminathan 444882527734SSukumar Swaminathan /* IOCTL_DCBX_SET_DCBX_MODE */ 444982527734SSukumar Swaminathan typedef struct _IOCTL_DCBX_SET_DCBX_MODE 445082527734SSukumar Swaminathan { 445182527734SSukumar Swaminathan union 445282527734SSukumar Swaminathan { 445382527734SSukumar Swaminathan struct 445482527734SSukumar Swaminathan { 445582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 445682527734SSukumar Swaminathan uint8_t rsvd0[2]; 445782527734SSukumar Swaminathan uint8_t dcbx_mode; 445882527734SSukumar Swaminathan uint8_t port_num; 445982527734SSukumar Swaminathan #endif 446082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 446182527734SSukumar Swaminathan uint8_t port_num; 446282527734SSukumar Swaminathan uint8_t dcbx_mode; 446382527734SSukumar Swaminathan uint8_t rsvd0[2]; 446482527734SSukumar Swaminathan #endif 446582527734SSukumar Swaminathan } request; 446682527734SSukumar Swaminathan 446782527734SSukumar Swaminathan struct 446882527734SSukumar Swaminathan { 446982527734SSukumar Swaminathan uint32_t rsvd1; 447082527734SSukumar Swaminathan } response; 447182527734SSukumar Swaminathan 447282527734SSukumar Swaminathan } params; 447382527734SSukumar Swaminathan 447482527734SSukumar Swaminathan } IOCTL_DCBX_SET_DCBX_MODE; 447582527734SSukumar Swaminathan 447682527734SSukumar Swaminathan 447782527734SSukumar Swaminathan /* IOCTL_COMMON_GET_CNTL_ATTRIB */ 447882527734SSukumar Swaminathan typedef struct 447982527734SSukumar Swaminathan { 448082527734SSukumar Swaminathan char flashrom_version_string[32]; 448182527734SSukumar Swaminathan char manufacturer_name[32]; 448282527734SSukumar Swaminathan char rsvd0[28]; 448382527734SSukumar Swaminathan uint32_t default_extended_timeout; 448482527734SSukumar Swaminathan char controller_model_number[32]; 448582527734SSukumar Swaminathan char controller_description[64]; 448682527734SSukumar Swaminathan char controller_serial_number[32]; 448782527734SSukumar Swaminathan char ip_version_string[32]; 448882527734SSukumar Swaminathan char firmware_version_string[32]; 448982527734SSukumar Swaminathan char bios_version_string[32]; 449082527734SSukumar Swaminathan char redboot_version_string[32]; 449182527734SSukumar Swaminathan char driver_version_string[32]; 449282527734SSukumar Swaminathan char fw_on_flash_version_string[32]; 449382527734SSukumar Swaminathan uint32_t functionalities_supported; 449482527734SSukumar Swaminathan uint16_t max_cdblength; 449582527734SSukumar Swaminathan uint8_t asic_revision; 449682527734SSukumar Swaminathan uint8_t generational_guid[16]; 449782527734SSukumar Swaminathan uint8_t hba_port_count; 449882527734SSukumar Swaminathan uint16_t default_link_down_timeout; 449982527734SSukumar Swaminathan uint8_t iscsi_ver_min_max; 450082527734SSukumar Swaminathan uint8_t multifunction_device; 450182527734SSukumar Swaminathan uint8_t cache_valid; 450282527734SSukumar Swaminathan uint8_t hba_status; 450382527734SSukumar Swaminathan uint8_t max_domains_supported; 450482527734SSukumar Swaminathan uint8_t phy_port; 450582527734SSukumar Swaminathan uint32_t firmware_post_status; 450682527734SSukumar Swaminathan uint32_t hba_mtu[2]; 450782527734SSukumar Swaminathan 450882527734SSukumar Swaminathan } MGMT_HBA_ATTRIB; 450982527734SSukumar Swaminathan 451082527734SSukumar Swaminathan typedef struct 451182527734SSukumar Swaminathan { 451282527734SSukumar Swaminathan MGMT_HBA_ATTRIB hba_attribs; 451382527734SSukumar Swaminathan uint16_t pci_vendor_id; 451482527734SSukumar Swaminathan uint16_t pci_device_id; 451582527734SSukumar Swaminathan uint16_t pci_sub_vendor_id; 451682527734SSukumar Swaminathan uint16_t pci_sub_system_id; 451782527734SSukumar Swaminathan uint8_t pci_bus_number; 451882527734SSukumar Swaminathan uint8_t pci_device_number; 451982527734SSukumar Swaminathan uint8_t pci_function_number; 452082527734SSukumar Swaminathan uint8_t interface_type; 452182527734SSukumar Swaminathan uint64_t unique_identifier; 452282527734SSukumar Swaminathan 452382527734SSukumar Swaminathan } MGMT_CONTROLLER_ATTRIB; 452482527734SSukumar Swaminathan 452582527734SSukumar Swaminathan typedef struct 452682527734SSukumar Swaminathan { 452782527734SSukumar Swaminathan union 452882527734SSukumar Swaminathan { 452982527734SSukumar Swaminathan struct 453082527734SSukumar Swaminathan { 453182527734SSukumar Swaminathan uint32_t rsvd0; 453282527734SSukumar Swaminathan } request; 453382527734SSukumar Swaminathan 453482527734SSukumar Swaminathan struct 453582527734SSukumar Swaminathan { 453682527734SSukumar Swaminathan MGMT_CONTROLLER_ATTRIB cntl_attributes_info; 453782527734SSukumar Swaminathan } response; 453882527734SSukumar Swaminathan 453982527734SSukumar Swaminathan } params; 454082527734SSukumar Swaminathan 454182527734SSukumar Swaminathan } IOCTL_COMMON_GET_CNTL_ATTRIB; 454282527734SSukumar Swaminathan 454382527734SSukumar Swaminathan 454482527734SSukumar Swaminathan typedef union 454582527734SSukumar Swaminathan { 454682527734SSukumar Swaminathan IOCTL_COMMON_NOP NOPVar; 454782527734SSukumar Swaminathan IOCTL_FCOE_WQ_CREATE WQCreateVar; 4548*8f23e9faSHans Rosenfeld IOCTL_FCOE_WQ_CREATE_V1 WQCreateVar1; 4549*8f23e9faSHans Rosenfeld IOCTL_FCOE_RQ_CREATE RQCreateVar; 4550*8f23e9faSHans Rosenfeld IOCTL_FCOE_RQ_CREATE_V1 RQCreateVar1; 455182527734SSukumar Swaminathan IOCTL_COMMON_EQ_CREATE EQCreateVar; 455282527734SSukumar Swaminathan IOCTL_COMMON_CQ_CREATE CQCreateVar; 4553*8f23e9faSHans Rosenfeld IOCTL_COMMON_CQ_CREATE_V2 CQCreateVar2; 455482527734SSukumar Swaminathan IOCTL_COMMON_MQ_CREATE MQCreateVar; 4555*8f23e9faSHans Rosenfeld IOCTL_COMMON_MQ_CREATE_EXT MQCreateExtVar; 4556*8f23e9faSHans Rosenfeld IOCTL_COMMON_MQ_CREATE_EXT_V1 MQCreateExtVar1; 455782527734SSukumar Swaminathan IOCTL_FCOE_CFG_POST_SGL_PAGES PostSGLVar; 455882527734SSukumar Swaminathan IOCTL_COMMON_GET_CNTL_ATTRIB GetCntlAttributesVar; 455982527734SSukumar Swaminathan IOCTL_FCOE_READ_FCF_TABLE ReadFCFTableVar; 456082527734SSukumar Swaminathan IOCTL_FCOE_ADD_FCF_TABLE AddFCFTableVar; 4561a9800bebSGarrett D'Amore IOCTL_FCOE_REDISCOVER_FCF_TABLE RediscoverFCFTableVar; 456282527734SSukumar Swaminathan IOCTL_COMMON_FLASHROM FlashRomVar; 456382527734SSukumar Swaminathan IOCTL_COMMON_MANAGE_FAT FATVar; 456482527734SSukumar Swaminathan IOCTL_DCBX_GET_DCBX_MODE GetDCBX; 456582527734SSukumar Swaminathan IOCTL_DCBX_SET_DCBX_MODE SetDCBX; 4566*8f23e9faSHans Rosenfeld IOCTL_COMMON_SLI4_PARAMS Sli4ParamVar; 4567*8f23e9faSHans Rosenfeld IOCTL_COMMON_EXTENTS ExtentsVar; 4568*8f23e9faSHans Rosenfeld IOCTL_COMMON_GET_PHY_DETAILS PHYDetailsVar; 4569*8f23e9faSHans Rosenfeld IOCTL_COMMON_GET_PORT_NAME PortNameVar; 4570*8f23e9faSHans Rosenfeld IOCTL_COMMON_GET_PORT_NAME_V1 PortNameVar1; 4571*8f23e9faSHans Rosenfeld IOCTL_COMMON_WRITE_OBJECT WriteObjVar; 4572*8f23e9faSHans Rosenfeld IOCTL_COMMON_BOOT_CFG BootCfgVar; 457382527734SSukumar Swaminathan 457482527734SSukumar Swaminathan } IOCTL_VARIANTS; 457582527734SSukumar Swaminathan 457682527734SSukumar Swaminathan /* Structure for MB Command SLI_CONFIG(0x9b) */ 457782527734SSukumar Swaminathan /* Good for SLI4 only */ 457882527734SSukumar Swaminathan 457982527734SSukumar Swaminathan typedef struct 458082527734SSukumar Swaminathan { 458182527734SSukumar Swaminathan be_req_hdr_t be; 458282527734SSukumar Swaminathan BE_PHYS_ADDR payload; 458382527734SSukumar Swaminathan } SLI_CONFIG_VAR; 458482527734SSukumar Swaminathan 458582527734SSukumar Swaminathan #define IOCTL_HEADER_SZ (4 * sizeof (uint32_t)) 458682527734SSukumar Swaminathan 458782527734SSukumar Swaminathan 458882527734SSukumar Swaminathan typedef union 458982527734SSukumar Swaminathan { 459082527734SSukumar Swaminathan uint32_t varWords[63]; 459182527734SSukumar Swaminathan READ_NV_VAR varRDnvp; /* cmd = x02 (READ_NVPARMS) */ 459282527734SSukumar Swaminathan INIT_LINK_VAR varInitLnk; /* cmd = x05 (INIT_LINK) */ 459382527734SSukumar Swaminathan CONFIG_LINK varCfgLnk; /* cmd = x07 (CONFIG_LINK) */ 459482527734SSukumar Swaminathan READ_REV4_VAR varRdRev4; /* cmd = x11 (READ_REV) */ 459582527734SSukumar Swaminathan READ_LNK_VAR varRdLnk; /* cmd = x12 (READ_LNK_STAT) */ 459682527734SSukumar Swaminathan DUMP4_VAR varDmp4; /* cmd = x17 (DUMP) */ 4597*8f23e9faSHans Rosenfeld UPDATE_CFG_VAR varUpdateCfg; /* cmd = x1b (update Cfg) */ 4598*8f23e9faSHans Rosenfeld BIU_DIAG_VAR varBIUdiag; /* cmd = x84 (RUN_BIU_DIAG64) */ 459982527734SSukumar Swaminathan READ_SPARM_VAR varRdSparm; /* cmd = x8D (READ_SPARM64) */ 460082527734SSukumar Swaminathan REG_FCFI_VAR varRegFCFI; /* cmd = xA0 (REG_FCFI) */ 460182527734SSukumar Swaminathan UNREG_FCFI_VAR varUnRegFCFI; /* cmd = xA2 (UNREG_FCFI) */ 460282527734SSukumar Swaminathan READ_LA_VAR varReadLA; /* cmd = x95 (READ_LA64) */ 460382527734SSukumar Swaminathan READ_CONFIG4_VAR varRdConfig4; /* cmd = x0B (READ_CONFIG) */ 460482527734SSukumar Swaminathan RESUME_RPI_VAR varResumeRPI; /* cmd = x9E (RESUME_RPI) */ 460582527734SSukumar Swaminathan REG_LOGIN_VAR varRegLogin; /* cmd = x93 (REG_RPI) */ 460682527734SSukumar Swaminathan UNREG_LOGIN_VAR varUnregLogin; /* cmd = x14 (UNREG_RPI) */ 460782527734SSukumar Swaminathan REG_VPI_VAR varRegVPI4; /* cmd = x96 (REG_VPI) */ 4608e2ca2865SSukumar Swaminathan UNREG_VPI_VAR4 varUnRegVPI4; /* cmd = x97 (UNREG_VPI) */ 460982527734SSukumar Swaminathan REG_VFI_VAR varRegVFI4; /* cmd = x9F (REG_VFI) */ 461082527734SSukumar Swaminathan UNREG_VFI_VAR varUnRegVFI4; /* cmd = xA1 (UNREG_VFI) */ 461182527734SSukumar Swaminathan REQUEST_FEATURES_VAR varReqFeatures; /* cmd = x9D (REQ_FEATURES) */ 461282527734SSukumar Swaminathan SLI_CONFIG_VAR varSLIConfig; /* cmd = x9B (SLI_CONFIG) */ 461382527734SSukumar Swaminathan INIT_VPI_VAR varInitVPI4; /* cmd = xA3 (INIT_VPI) */ 461482527734SSukumar Swaminathan INIT_VFI_VAR varInitVFI4; /* cmd = xA4 (INIT_VFI) */ 461582527734SSukumar Swaminathan 461682527734SSukumar Swaminathan } MAILVARIANTS4; /* Used for SLI-4 */ 461782527734SSukumar Swaminathan 461882527734SSukumar Swaminathan #define MAILBOX_CMD_SLI4_BSIZE 256 461982527734SSukumar Swaminathan #define MAILBOX_CMD_SLI4_WSIZE 64 462082527734SSukumar Swaminathan 462182527734SSukumar Swaminathan #define MAILBOX_CMD_MAX_BSIZE 256 462282527734SSukumar Swaminathan #define MAILBOX_CMD_MAX_WSIZE 64 462382527734SSukumar Swaminathan 462482527734SSukumar Swaminathan 462582527734SSukumar Swaminathan typedef volatile struct 462682527734SSukumar Swaminathan { 462782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 462882527734SSukumar Swaminathan uint16_t mbxStatus; 462982527734SSukumar Swaminathan uint8_t mbxCommand; 463082527734SSukumar Swaminathan uint8_t mbxReserved:6; 463182527734SSukumar Swaminathan uint8_t mbxHc:1; 463282527734SSukumar Swaminathan uint8_t mbxOwner:1; /* Low order bit first word */ 463382527734SSukumar Swaminathan #endif 463482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 463582527734SSukumar Swaminathan uint8_t mbxOwner:1; /* Low order bit first word */ 463682527734SSukumar Swaminathan uint8_t mbxHc:1; 463782527734SSukumar Swaminathan uint8_t mbxReserved:6; 463882527734SSukumar Swaminathan uint8_t mbxCommand; 463982527734SSukumar Swaminathan uint16_t mbxStatus; 464082527734SSukumar Swaminathan #endif 4641*8f23e9faSHans Rosenfeld MAILVARIANTS4 un; /* 252 bytes */ 464282527734SSukumar Swaminathan } MAILBOX4; /* Used for SLI-4 */ 464382527734SSukumar Swaminathan 464482527734SSukumar Swaminathan /* 464582527734SSukumar Swaminathan * End Structure Definitions for Mailbox Commands 464682527734SSukumar Swaminathan */ 464782527734SSukumar Swaminathan 464882527734SSukumar Swaminathan 464982527734SSukumar Swaminathan typedef struct emlxs_mbq 465082527734SSukumar Swaminathan { 465182527734SSukumar Swaminathan volatile uint32_t mbox[MAILBOX_CMD_MAX_WSIZE]; 465282527734SSukumar Swaminathan struct emlxs_mbq *next; 465382527734SSukumar Swaminathan 465482527734SSukumar Swaminathan /* Defferred handling pointers */ 4655a9800bebSGarrett D'Amore void *nonembed; /* ptr to data buffer */ 465682527734SSukumar Swaminathan /* structure */ 4657a9800bebSGarrett D'Amore void *bp; /* ptr to data buffer */ 465882527734SSukumar Swaminathan /* structure */ 4659a9800bebSGarrett D'Amore void *sbp; /* ptr to emlxs_buf_t */ 466082527734SSukumar Swaminathan /* structure */ 4661a9800bebSGarrett D'Amore void *ubp; /* ptr to fc_unsol_buf_t */ 466282527734SSukumar Swaminathan /* structure */ 4663a9800bebSGarrett D'Amore void *iocbq; /* ptr to IOCBQ structure */ 4664a9800bebSGarrett D'Amore void *context; /* ptr to mbox context data */ 4665a9800bebSGarrett D'Amore void *port; /* Sending port */ 466682527734SSukumar Swaminathan uint32_t flag; 466782527734SSukumar Swaminathan 466882527734SSukumar Swaminathan #define MBQ_POOL_ALLOCATED 0x00000001 466982527734SSukumar Swaminathan #define MBQ_PASSTHRU 0x00000002 467082527734SSukumar Swaminathan #define MBQ_EMBEDDED 0x00000004 467182527734SSukumar Swaminathan #define MBQ_BOOTSTRAP 0x00000008 467282527734SSukumar Swaminathan #define MBQ_COMPLETED 0x00010000 /* Used for MBX_SLEEP */ 467382527734SSukumar Swaminathan #define MBQ_INIT_MASK 0x0000ffff 467482527734SSukumar Swaminathan 467582527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT 467682527734SSukumar Swaminathan uint8_t *extbuf; /* ptr to mailbox ext buffer */ 467782527734SSukumar Swaminathan uint32_t extsize; /* size of mailbox ext buffer */ 467882527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */ 4679a9800bebSGarrett D'Amore uint32_t (*mbox_cmpl)(); 468082527734SSukumar Swaminathan } emlxs_mbq_t; 468182527734SSukumar Swaminathan typedef emlxs_mbq_t MAILBOXQ; 468282527734SSukumar Swaminathan 468382527734SSukumar Swaminathan 468482527734SSukumar Swaminathan /* We currently do not support IOCBs in SLI1 mode */ 468582527734SSukumar Swaminathan typedef struct 468682527734SSukumar Swaminathan { 468782527734SSukumar Swaminathan MAILBOX mbx; 468882527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT 468982527734SSukumar Swaminathan uint8_t mbxExt[MBOX_EXTENSION_SIZE]; 469082527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */ 469182527734SSukumar Swaminathan uint8_t pad[(SLI_SLIM1_SIZE - 469282527734SSukumar Swaminathan (sizeof (MAILBOX) + MBOX_EXTENSION_SIZE))]; 469382527734SSukumar Swaminathan } SLIM1; 469482527734SSukumar Swaminathan 469582527734SSukumar Swaminathan 469682527734SSukumar Swaminathan typedef struct 469782527734SSukumar Swaminathan { 469882527734SSukumar Swaminathan MAILBOX mbx; 469982527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT 470082527734SSukumar Swaminathan uint8_t mbxExt[MBOX_EXTENSION_SIZE]; 470182527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */ 470282527734SSukumar Swaminathan PCB pcb; 470382527734SSukumar Swaminathan uint8_t IOCBs[SLI_IOCB_MAX_SIZE]; 470482527734SSukumar Swaminathan } SLIM2; 470582527734SSukumar Swaminathan 470682527734SSukumar Swaminathan 470782527734SSukumar Swaminathan /* def for new 2MB Flash (Pegasus ...) */ 470882527734SSukumar Swaminathan #define MBX_LOAD_AREA 0x81 470982527734SSukumar Swaminathan #define MBX_LOAD_EXP_ROM 0x9C 471082527734SSukumar Swaminathan 471182527734SSukumar Swaminathan #define FILE_TYPE_AWC 0xE1A01001 471282527734SSukumar Swaminathan #define FILE_TYPE_DWC 0xE1A02002 471382527734SSukumar Swaminathan #define FILE_TYPE_BWC 0xE1A03003 471482527734SSukumar Swaminathan 471582527734SSukumar Swaminathan #define AREA_ID_MASK 0xFFFFFF0F 471682527734SSukumar Swaminathan #define AREA_ID_AWC 0x00000001 471782527734SSukumar Swaminathan #define AREA_ID_DWC 0x00000002 471882527734SSukumar Swaminathan #define AREA_ID_BWC 0x00000003 471982527734SSukumar Swaminathan 472082527734SSukumar Swaminathan #define CMD_START_ERASE 1 472182527734SSukumar Swaminathan #define CMD_CONTINUE_ERASE 2 472282527734SSukumar Swaminathan #define CMD_DOWNLOAD 3 472382527734SSukumar Swaminathan #define CMD_END_DOWNLOAD 4 472482527734SSukumar Swaminathan 472582527734SSukumar Swaminathan #define RSP_ERASE_STARTED 1 472682527734SSukumar Swaminathan #define RSP_ERASE_COMPLETE 2 472782527734SSukumar Swaminathan #define RSP_DOWNLOAD_MORE 3 472882527734SSukumar Swaminathan #define RSP_DOWNLOAD_DONE 4 472982527734SSukumar Swaminathan 473082527734SSukumar Swaminathan #define EROM_CMD_FIND_IMAGE 8 473182527734SSukumar Swaminathan #define EROM_CMD_CONTINUE_ERASE 9 473282527734SSukumar Swaminathan #define EROM_CMD_COPY 10 473382527734SSukumar Swaminathan 473482527734SSukumar Swaminathan #define EROM_RSP_ERASE_STARTED 8 473582527734SSukumar Swaminathan #define EROM_RSP_ERASE_COMPLETE 9 473682527734SSukumar Swaminathan #define EROM_RSP_COPY_MORE 10 473782527734SSukumar Swaminathan #define EROM_RSP_COPY_DONE 11 473882527734SSukumar Swaminathan 473982527734SSukumar Swaminathan #define ALLext 1 474082527734SSukumar Swaminathan #define DWCext 2 474182527734SSukumar Swaminathan #define BWCext 3 474282527734SSukumar Swaminathan 474382527734SSukumar Swaminathan #define NO_ALL 0 474482527734SSukumar Swaminathan #define ALL_WITHOUT_BWC 1 474582527734SSukumar Swaminathan #define ALL_WITH_BWC 2 474682527734SSukumar Swaminathan 474782527734SSukumar Swaminathan #define KERNEL_START_ADDRESS 0x000000 474882527734SSukumar Swaminathan #define DOWNLOAD_START_ADDRESS 0x040000 474982527734SSukumar Swaminathan #define EXP_ROM_START_ADDRESS 0x180000 475082527734SSukumar Swaminathan #define SCRATCH_START_ADDRESS 0x1C0000 475182527734SSukumar Swaminathan #define CONFIG_START_ADDRESS 0x1E0000 475282527734SSukumar Swaminathan 475382527734SSukumar Swaminathan 475482527734SSukumar Swaminathan typedef struct SliAifHdr 475582527734SSukumar Swaminathan { 475682527734SSukumar Swaminathan uint32_t CompressBr; 475782527734SSukumar Swaminathan uint32_t RelocBr; 475882527734SSukumar Swaminathan uint32_t ZinitBr; 475982527734SSukumar Swaminathan uint32_t EntryBr; 476082527734SSukumar Swaminathan uint32_t Area_ID; 476182527734SSukumar Swaminathan uint32_t RoSize; 476282527734SSukumar Swaminathan uint32_t RwSize; 476382527734SSukumar Swaminathan uint32_t DbgSize; 476482527734SSukumar Swaminathan uint32_t ZinitSize; 476582527734SSukumar Swaminathan uint32_t DbgType; 476682527734SSukumar Swaminathan uint32_t ImageBase; 476782527734SSukumar Swaminathan uint32_t Area_Size; 476882527734SSukumar Swaminathan uint32_t AddressMode; 476982527734SSukumar Swaminathan uint32_t DataBase; 477082527734SSukumar Swaminathan uint32_t AVersion; 477182527734SSukumar Swaminathan uint32_t Spare2; 477282527734SSukumar Swaminathan uint32_t DebugSwi; 477382527734SSukumar Swaminathan uint32_t ZinitCode[15]; 477482527734SSukumar Swaminathan } AIF_HDR, *PAIF_HDR; 477582527734SSukumar Swaminathan 477682527734SSukumar Swaminathan typedef struct ImageHdr 477782527734SSukumar Swaminathan { 477882527734SSukumar Swaminathan uint32_t BlockSize; 477982527734SSukumar Swaminathan PROG_ID Id; 478082527734SSukumar Swaminathan uint32_t Flags; 478182527734SSukumar Swaminathan uint32_t EntryAdr; 478282527734SSukumar Swaminathan uint32_t InitAdr; 478382527734SSukumar Swaminathan uint32_t ExitAdr; 478482527734SSukumar Swaminathan uint32_t ImageBase; 478582527734SSukumar Swaminathan uint32_t ImageSize; 478682527734SSukumar Swaminathan uint32_t ZinitSize; 478782527734SSukumar Swaminathan uint32_t RelocSize; 478882527734SSukumar Swaminathan uint32_t HdrCks; 478982527734SSukumar Swaminathan } IMAGE_HDR, *PIMAGE_HDR; 479082527734SSukumar Swaminathan 479182527734SSukumar Swaminathan 479282527734SSukumar Swaminathan 479382527734SSukumar Swaminathan typedef struct 479482527734SSukumar Swaminathan { 479582527734SSukumar Swaminathan PROG_ID prog_id; 479682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN 479782527734SSukumar Swaminathan uint32_t pci_cfg_rsvd:27; 479882527734SSukumar Swaminathan uint32_t use_hdw_def:1; 479982527734SSukumar Swaminathan uint32_t pci_cfg_sel:3; 480082527734SSukumar Swaminathan uint32_t pci_cfg_lookup_sel:1; 480182527734SSukumar Swaminathan #endif 480282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN 480382527734SSukumar Swaminathan uint32_t pci_cfg_lookup_sel:1; 480482527734SSukumar Swaminathan uint32_t pci_cfg_sel:3; 480582527734SSukumar Swaminathan uint32_t use_hdw_def:1; 480682527734SSukumar Swaminathan uint32_t pci_cfg_rsvd:27; 480782527734SSukumar Swaminathan #endif 480882527734SSukumar Swaminathan union 480982527734SSukumar Swaminathan { 481082527734SSukumar Swaminathan PROG_ID boot_bios_id; 481182527734SSukumar Swaminathan uint32_t boot_bios_wd[2]; 481282527734SSukumar Swaminathan } u0; 481382527734SSukumar Swaminathan PROG_ID sli1_prog_id; 481482527734SSukumar Swaminathan PROG_ID sli2_prog_id; 481582527734SSukumar Swaminathan PROG_ID sli3_prog_id; 481682527734SSukumar Swaminathan PROG_ID sli4_prog_id; 481782527734SSukumar Swaminathan union 481882527734SSukumar Swaminathan { 481982527734SSukumar Swaminathan PROG_ID EROM_prog_id; 482082527734SSukumar Swaminathan uint32_t EROM_prog_wd[2]; 482182527734SSukumar Swaminathan } u1; 482282527734SSukumar Swaminathan } WAKE_UP_PARMS, *PWAKE_UP_PARMS; 482382527734SSukumar Swaminathan 482482527734SSukumar Swaminathan 482582527734SSukumar Swaminathan #define PROG_DESCR_STR_LEN 24 48266a573d82SSukumar Swaminathan #define MAX_LOAD_ENTRY 32 482782527734SSukumar Swaminathan 482882527734SSukumar Swaminathan typedef struct 482982527734SSukumar Swaminathan { 483082527734SSukumar Swaminathan uint32_t next; 483182527734SSukumar Swaminathan uint32_t prev; 483282527734SSukumar Swaminathan uint32_t start_adr; 483382527734SSukumar Swaminathan uint32_t len; 483482527734SSukumar Swaminathan union 483582527734SSukumar Swaminathan { 483682527734SSukumar Swaminathan PROG_ID id; 483782527734SSukumar Swaminathan uint32_t wd[2]; 483882527734SSukumar Swaminathan } un; 483982527734SSukumar Swaminathan uint8_t prog_descr[PROG_DESCR_STR_LEN]; 484082527734SSukumar Swaminathan } LOAD_ENTRY; 484182527734SSukumar Swaminathan 484282527734SSukumar Swaminathan typedef struct 484382527734SSukumar Swaminathan { 484482527734SSukumar Swaminathan uint32_t head; 484582527734SSukumar Swaminathan uint32_t tail; 484682527734SSukumar Swaminathan uint32_t entry_cnt; 484782527734SSukumar Swaminathan LOAD_ENTRY load_entry[MAX_LOAD_ENTRY]; 484882527734SSukumar Swaminathan } LOAD_LIST; 484982527734SSukumar Swaminathan 485082527734SSukumar Swaminathan #ifdef __cplusplus 485182527734SSukumar Swaminathan } 485282527734SSukumar Swaminathan #endif 485382527734SSukumar Swaminathan 485482527734SSukumar Swaminathan #endif /* _EMLXS_MBOX_H */ 4855