qlt_ioctl.h revision fcf3ce441efd61da9bb2884968af01cb7c1452cc
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _QLT_IOCTL_H
#define _QLT_IOCTL_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* stmf error codes from qlt_ioctl
*/
typedef enum qlt_ioctl_err {
QLTIO_NO_DUMP = 1,
QLTIO_DUMP_INPROGRESS,
QLTIO_NOT_ONLINE,
QLTIO_INVALID_FW_SIZE,
QLTIO_INVALID_FW_TYPE,
QLTIO_ALREADY_FETCHED,
QLTIO_MBOX_NOT_INITIALIZED,
QLTIO_CANT_GET_MBOXES,
QLTIO_MBOX_TIMED_OUT,
QLTIO_MBOX_ABORTED,
QLTIO_MAX_ERR
} qlt_ioctl_err_t;
#define QLTIO_ERR_STRINGS { \
"No additional information", \
"No firmware dump available", \
"Firmware dump in progress", \
"Port is not online", \
"Firmware size is invalid", \
"Firmware type does not match this chip", \
"Firmware dump already fetched by user", \
"Mailboxes are not yet initialized", \
"Mailboxes are not busy", \
"Mailbox command timed out", \
"Mailbox command got aborted", \
"" \
}
typedef struct qlt_fw_info {
uint32_t fwi_stay_offline:1,
fwi_port_active:1,
fwi_fw_uploaded:1,
fwi_rsvd:29;
uint16_t fwi_active_major;
uint16_t fwi_active_minor;
uint16_t fwi_active_subminor;
uint16_t fwi_active_attr;
uint16_t fwi_loaded_major;
uint16_t fwi_loaded_minor;
uint16_t fwi_loaded_subminor;
uint16_t fwi_loaded_attr;
uint16_t fwi_default_major;
uint16_t fwi_default_minor;
uint16_t fwi_default_subminor;
uint16_t fwi_default_attr;
} qlt_fw_info_t;
typedef struct qlt_ioctl_mbox {
uint16_t to_fw[32];
uint32_t to_fw_mask;
uint16_t from_fw[32];
uint32_t from_fw_mask;
} qlt_ioctl_mbox_t;
#define QLT_FWDUMP_BUFSIZE (4 * 1024 * 1024)
/*
* QLT IOCTLs
*/
#define QLT_IOCTL_FETCH_FWDUMP 0x9001
#define QLT_IOCTL_TRIGGER_FWDUMP 0x9002
#define QLT_IOCTL_UPLOAD_FW 0x9003
#define QLT_IOCTL_CLEAR_FW 0x9004
#define QLT_IOCTL_GET_FW_INFO 0x9005
#define QLT_IOCTL_STAY_OFFLINE 0x9006
#define QLT_IOCTL_MBOX 0x9007
#ifdef __cplusplus
}
#endif
#endif /* _QLT_IOCTL_H */