#ifndef _QLT_IOCTL_H
#define _QLT_IOCTL_H
#ifdef __cplusplus
extern "C" {
#endif
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)
#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
#define QLT_IOCTL_ELOG 0x9008
#define QLT_IOCTL_CHIP_RESET 0x9009
#define QLT_IOCTL_CRASH_SYS 0x900a
#ifdef __cplusplus
}
#endif
#endif