291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/*
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * CDDL HEADER START
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan *
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * The contents of this file are subject to the terms of the
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * Common Development and Distribution License (the "License").
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * You may not use this file except in compliance with the License.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan *
8f23e9fa8abcb5857661066b954e63400d589b65Hans Rosenfeld * You can obtain a copy of the license at
8f23e9fa8abcb5857661066b954e63400d589b65Hans Rosenfeld * http://www.opensource.org/licenses/cddl1.txt.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * See the License for the specific language governing permissions
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * and limitations under the License.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan *
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * When distributing Covered Code, include this CDDL HEADER in each
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * If applicable, add the following below this CDDL HEADER, with the
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * fields enclosed by brackets "[]" replaced with your own identifying
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * information: Portions Copyright [yyyy] [name of copyright owner]
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan *
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * CDDL HEADER END
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/*
8f23e9fa8abcb5857661066b954e63400d589b65Hans Rosenfeld * Copyright (c) 2004-2011 Emulex. All rights reserved.
825277341c15b6b0d2c4b8b622ae7b1d2bdc0390Sukumar Swaminathan * Use is subject to license terms.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#ifndef _EMLXS_SDAPI_H
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define _EMLXS_SDAPI_H
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#ifdef __cplusplus
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern "C" {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#endif
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/*
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * Although information in this file can be used by app, libdfc or driver,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * its purpose is for communication between app and libdfc.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan * Its content come from the SAN Diag API Specification.
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Define for refering SCSI_IO_LATENCY */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_IO_LATENCY_TYPE 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_IO_LATENCY_MAX_BUCKETS 20 /* Size of array range */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Masks for ELS Commands */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_PLOGI_RCV 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_PRLO_RCV 0x02
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_ADISC_RCV 0x04
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_LSRJT_RCV 0x08
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_LOGO_RCV 0x10
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_RSCN_RCV 0x20
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Masks for Fabric events */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_FABRIC_SUBCATEGORY_FABRIC_BUSY 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_FABRIC_SUBCATEGORY_PORT_BUSY 0x02
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_FABRIC_SUBCATEGORY_FCPRDCHKERR 0x04
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Masks for SCSI events */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_QFULL 0x0001
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_DEVBSY 0x0002
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_CHECKCONDITION 0x0004
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_LUNRESET 0x0008
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_TGTRESET 0x0010
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_BUSRESET 0x0020
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_VARQUEDEPTH 0x0040
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Masks for Board Events */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_BOARD_SUBCATEGORY_PORTINTERR 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_BOARD_SUBCATEGORY_LINKATTE 0x02
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Masks for Adapter Events */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ADAPTER_SUBCATEGORY_ARRIVAL 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ADAPTER_SUBCATEGORY_DEPARTURE 0x02
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Struct to hold SCSI IO Latency statistics per bucket */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct SD_time_stats_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan int sd_tstats_bucket_count;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Struct per target for SCSI IO Latency */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct SD_IO_Latency_Response {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_iolatency_target_wwpn;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan /* Size of array depends on range size */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan struct SD_time_stats_v0 sd_time_stats_array[SD_IO_LATENCY_MAX_BUCKETS];
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Return Codes */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanenum SD_RETURN_CODES {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_OK,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_GENERIC,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_ARG,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_INVALID_BOARD_ID,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_INVALID_VPORT,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_NOT_SUPPORTED,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_CATEGORY_NOT_SUPPORTED,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_SUBCATEGORY_NOT_SUPPORTED,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_MORE_DATA_AVAILABLE,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_EVENT_ALREADY_REGISTERED,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_NO_ACTIVE_REGISTRATION,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_ARG_MISSING,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_NO_MEMORY,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_BUCKET_NOTSET,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_REG_HANDLE,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_INVALID_SEARCH_TYPE,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_FUNCTION_NOT_SUPPORTED,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_OUT_OF_HANDLES,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_LIB_NOT_INIT,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_DATA_COLLECTION_ACTIVE,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ERROR_DATA_COLLECTION_NOT_ACTIVE,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_MAX_RETURN_CODES
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SEARCH_LINEAR 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SEARCH_POWER_2 0x02
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern uint32_t DFC_SD_Get_Granularity(void);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Set_Bucket(uint16_t type,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t search_type,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t base,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t step);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Destroy_Bucket(uint16_t type);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Get_Bucket(uint16_t type,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t *search_type,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t *base,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t *step,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint64_t *values);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Start_Data_Collection(uint32_t board,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN port_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t type,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *arg);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Stop_Data_Collection(uint32_t board,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN port_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t type);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Reset_Data_Collection(uint32_t board,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN port_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t type);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_Get_Data(uint32_t board,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN port_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t type,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint16_t *target,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t buf_size,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *buff);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_REG_ELS_EVENT 0x01
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_REG_FABRIC_EVENT 0x02
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_REG_SCSI_EVENT 0x04
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_REG_BOARD_EVENT 0x08
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_REG_ADAPTER_EVENT 0x10
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_ELS_SUBCATEGORY_VALID_MASK (SD_ELS_SUBCATEGORY_PLOGI_RCV | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ELS_SUBCATEGORY_PRLO_RCV | SD_ELS_SUBCATEGORY_ADISC_RCV | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ELS_SUBCATEGORY_LSRJT_RCV | SD_ELS_SUBCATEGORY_LOGO_RCV | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_ELS_SUBCATEGORY_RSCN_RCV)
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Generic Payload */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_event {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_evt_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan size_t sd_evt_size;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *sd_evt_payload;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_els_event_details_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_elsevt_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *sd_elsevt_payload;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_plogi_rcv_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_plogir_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_plogir_portname;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_plogir_nodename;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_prlo_rcv_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_prlor_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_prlor_remoteport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_lsrjt_rcv_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_lsrjtr_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_lsrjtr_remoteport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_lsrjtr_original_cmd;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_lsrjtr_reasoncode;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_lsrjtr_reasoncodeexpl;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_adisc_rcv_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_adiscr_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_adiscr_portname;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_adiscr_nodename;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_FABRIC_SUBCATEGORY_VALID_MASK (\
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_FABRIC_SUBCATEGORY_FABRIC_BUSY | SD_FABRIC_SUBCATEGORY_PORT_BUSY | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_FABRIC_SUBCATEGORY_FCPRDCHKERR)
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_fabric_event_details_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_fabric_evt_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *sd_fabric_evt_payload;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_pbsy_rcv_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_pbsyr_evt_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_pbsyr_rport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_fcprdchkerr_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_fcprdchkerr_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_fcprdchkerr_rport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_fcprdchkerr_lun;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_fcprdchkerr_opcode;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_fcprdchkerr_fcpiparam;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#define SD_SCSI_SUBCATEGORY_VALID_MASK (\
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_SCSI_SUBCATEGORY_QFULL | SD_SCSI_SUBCATEGORY_DEVBSY | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_SCSI_SUBCATEGORY_CHECKCONDITION | SD_SCSI_SUBCATEGORY_LUNRESET | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_SCSI_SUBCATEGORY_TGTRESET | SD_SCSI_SUBCATEGORY_BUSRESET | \
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan SD_SCSI_SUBCATEGORY_VARQUEDEPTH)
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_scsi_event_details_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_evt_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *sd_scsi_evt_payload;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_scsi_generic_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_generic_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_scsi_generic_rport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan int32_t sd_scsi_generic_lun;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_scsi_checkcond_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_checkcond_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_scsi_checkcond_rport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_checkcond_lun;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_checkcond_cmdcode;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_checkcond_sensekey;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_checkcond_asc;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_scsi_checkcond_ascq;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanstruct sd_scsi_varquedepth_v0 {
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_varquedepth_version;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN sd_varquedepth_rport;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan int32_t sd_varquedepth_lun;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_varquedepth_oldval;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t sd_varquedepth_newval;
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan};
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Prototype for callback */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathantypedef void sd_callback(uint32_t board_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN ort_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t category,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t subcategory,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *context,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan struct sd_event *sd_data);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Register for event */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_RegisterForEvent(uint32_t board_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN port_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t category,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t subcategory,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan void *context,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t *reg_handle,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan sd_callback *func);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan/* Deregister a event */
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathanextern int32_t DFC_SD_unRegisterForEvent(uint32_t board_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan HBA_WWN vport_id,
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan uint32_t reg_handle);
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#ifdef __cplusplus
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan}
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#endif
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan
291a2b48b9adcd7b3666c34e80ba6411929afe7fSukumar Swaminathan#endif /* _EMLXS_SDAPI_H */