/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
#ifndef _SYS_SCSI_ADAPTERS_MPAPI_IMPL_H
#define _SYS_SCSI_ADAPTERS_MPAPI_IMPL_H
#include <sys/mdi_impldefs.h>
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(_BIT_FIELDS_LTOH) && !defined(_BIT_FIELDS_HTOL)
#endif /* _BIT_FIELDS_LTOH */
/*
* All the structures (except mp_iocdata_t) are 64-bit aligned (padded,
* where necessary) to facilitate the use of the same structure for
* handling ioctl calls made by both 32-bit and 64-bit applications.
* There are no pointers to other structures inside these structures
* as copyout to user land may not produce desired result.
* The caddr_t structure is kept at the end due to the undeterminstic
* size it could accrue to its parent structure.
*/
/* Structure for MP_PLUGIN_PROPERTIES */
typedef struct mp_driver_prop {
/* Size of "proprietaryProp" field */
/* Constants for autoFailbackSupport */
/*
* Both MP_DRVR_AUTO_FAILBACK_SUPPORT and
* MP_DRVR_AUTO_FAILBACK_SUPPORT_LU
* can be supported at the same time.
*/
#define MP_DRVR_AUTO_FAILBACK_SUPPORT_NONE 0
/*
* Declaration of the MP_LOAD_BALANCE_TYPE constants - should be
* the same defines as in mpapi.h
*/
#define MP_DRVR_LOAD_BALANCE_TYPE_NONE 0
/*
* Proprietary load balance type should start from 0x10000(1<<16) or greater.
* It is exposed through API MP_GetProprietaryLoadBalanceProperties if exists.
*/
/* Constants for autoProbingSupport */
/*
* Both MP_DRVR_AUTO_PROBING_SUPPORT and
* MP_DRVR_AUTO_PROBING_SUPPORT_LU
* can be supported at the same time.
*/
#define MP_DRVR_AUTO_PROBING_SUPPORT_NONE 0
/* Structures for MP_DEVICE_PRODUCT_PROPERTIES */
typedef struct mp_vendor_prod_info {
typedef struct mp_dev_prod_prop {
/* Structure for MP_MULTIPATH_LOGICAL_UNIT_PROPERTIES */
typedef struct mp_logical_unit_prop {
/* Constants for nameType */
#define MP_DRVR_NAME_TYPE_UNKNOWN 0
/* Structure for MP_INITIATOR_PORT_PROPERTIES */
typedef struct mp_init_port_prop {
/* Constants for portType */
#define MP_DRVR_TRANSPORT_TYPE_UNKNOWN 0
/* Structure for MP_TARGET_PORT_PROPERTIES */
typedef struct mp_target_port_prop {
/* Structure for MP_TARGET_PORT_GROUP_PROPERTIES */
typedef struct mp_tpg_prop {
/* Constants for accessState */
#define MP_DRVR_ACCESS_STATE_ACTIVE_OPTIMIZED 0
/* Structure for MP_PATH_LOGICAL_UNIT_PROPERTIES */
typedef struct mp_path_prop {
/* Constants for pathState */
#define MP_DRVR_PATH_STATE_ACTIVE 0
/* Structure for MP_PROPRIETARY_LOAD_BALANCE_PROPERTIES */
typedef struct mp_proprietary_loadbalance_prop {
/*
* Structure used as input to
* MP_ASSIGN_LU_TO_TPG subcmd.
*/
typedef struct mp_lu_tpg_pair {
/* used for uscsi commmands */
typedef struct mp_uscsi_cmd {
/*
* Structure used as input to
* MP_SET_TPG_ACCESS_STATE subcmd.
*/
typedef struct mp_set_tpg_state_req {
/*
* Structure for ioctl data
*/
typedef struct mp_iocdata {
} mp_iocdata_t;
#ifdef _KERNEL
#if defined(_SYSCALL32)
#pragma pack(4)
#endif
/*
* Structure for 32-bit ioctl data
*/
typedef struct mp_iocdata32 {
#pragma pack()
#endif
#endif /* _SYSCALL32 */
#endif /* _KERNEL */
/* Constants for MP_XFER */
/* Constants for MP_OBJECT_TYPE */
#define MP_OBJECT_TYPE_UNKNOWN 0
/* Constants for MP_CMD */
/*
* Typical MP API ioctl interface specific Return Values
*/
/*
* Macros for OID operations
*/
/*
* Event Class and Sub-Class definitions
*/
#ifdef __cplusplus
}
#endif
#endif /* _SYS_SCSI_ADAPTERS_MPAPI_IMPL_H */