📄 mbox_defs.h
字号:
uint8_t ldrv_op_counter; uint8_t ldrv_opid; uint8_t ldrv_opcmd; uint8_t ldrv_opstatus; uint8_t ldrv_state_counter; uint8_t ldrv_state_id; uint8_t ldrv_state_new; uint8_t ldrv_state_old; uint8_t pdrv_state_counter; uint8_t pdrv_state_id; uint8_t pdrv_state_new; uint8_t pdrv_state_old; uint8_t pdrv_fmt_counter; uint8_t pdrv_fmt_id; uint8_t pdrv_fmt_val; uint8_t pdrv_fmt_rsvd; uint8_t targ_xfer_counter; uint8_t targ_xfer_id; uint8_t targ_xfer_val; uint8_t targ_xfer_rsvd; uint8_t fcloop_id_chg_counter; uint8_t fcloopid_pdrvid; uint8_t fcloop_id0; uint8_t fcloop_id1; uint8_t fcloop_state_counter; uint8_t fcloop_state0; uint8_t fcloop_state1; uint8_t fcloop_state_rsvd;} __attribute__ ((packed)) mraid_notify_t;/** * mraid_inquiry3_t - enquiry for device information * * @data_size : current size in bytes (not including resvd) * @notify : * @notify_rsvd : * @rebuild_rate : rebuild rate (0% - 100%) * @cache_flush_int : cache flush interval in seconds * @sense_alert : * @drive_insert_count : drive insertion count * @battery_status : * @num_ldrv : no. of Log Drives configured * @recon_state : state of reconstruct * @ldrv_op_status : logdrv Status * @ldrv_size : size of each log drv * @ldrv_prop : * @ldrv_state : state of log drives * @pdrv_state : state of phys drvs. * @pdrv_format : * @targ_xfer : phys device transfer rate * @pad1k : 761 + 263reserved = 1024 bytes total size */#define MAX_NOTIFY_SIZE 0x80#define CUR_NOTIFY_SIZE sizeof(mraid_notify_t)typedef struct { uint32_t data_size; mraid_notify_t notify; uint8_t notify_rsvd[MAX_NOTIFY_SIZE - CUR_NOTIFY_SIZE]; uint8_t rebuild_rate; uint8_t cache_flush_int; uint8_t sense_alert; uint8_t drive_insert_count; uint8_t battery_status; uint8_t num_ldrv; uint8_t recon_state[MAX_LOGICAL_DRIVES_40LD / 8]; uint16_t ldrv_op_status[MAX_LOGICAL_DRIVES_40LD / 8]; uint32_t ldrv_size[MAX_LOGICAL_DRIVES_40LD]; uint8_t ldrv_prop[MAX_LOGICAL_DRIVES_40LD]; uint8_t ldrv_state[MAX_LOGICAL_DRIVES_40LD]; uint8_t pdrv_state[FC_MAX_PHYSICAL_DEVICES]; uint16_t pdrv_format[FC_MAX_PHYSICAL_DEVICES / 16]; uint8_t targ_xfer[80]; uint8_t pad1k[263];} __attribute__ ((packed)) mraid_inquiry3_t;/** * mraid_adapinfo_t - information about the adapter * @max_commands : max concurrent commands supported * @rebuild_rate : rebuild rate - 0% thru 100% * @max_targ_per_chan : max targ per channel * @nchannels : number of channels on HBA * @fw_version : firmware version * @age_of_flash : number of times FW has been flashed * @chip_set_value : contents of 0xC0000832 * @dram_size : in MB * @cache_flush_interval : in seconds * @bios_version : * @board_type : * @sense_alert : * @write_config_count : increase with every configuration change * @drive_inserted_count : increase with every drive inserted * @inserted_drive : channel:Id of inserted drive * @battery_status : bit 0: battery module missing * bit 1: VBAD * bit 2: temprature high * bit 3: battery pack missing * bit 4,5: * 00 - charge complete * 01 - fast charge in progress * 10 - fast charge fail * 11 - undefined * bit 6: counter > 1000 * bit 7: Undefined * @dec_fault_bus_info : */typedef struct { uint8_t max_commands; uint8_t rebuild_rate; uint8_t max_targ_per_chan; uint8_t nchannels; uint8_t fw_version[4]; uint16_t age_of_flash; uint8_t chip_set_value; uint8_t dram_size; uint8_t cache_flush_interval; uint8_t bios_version[4]; uint8_t board_type; uint8_t sense_alert; uint8_t write_config_count; uint8_t battery_status; uint8_t dec_fault_bus_info;} __attribute__ ((packed)) mraid_adapinfo_t;/** * mraid_ldrv_info_t - information about the logical drives * @nldrv : Number of logical drives configured * @rsvd : * @size : size of each logical drive * @prop : * @state : state of each logical drive */typedef struct { uint8_t nldrv; uint8_t rsvd[3]; uint32_t size[MAX_LOGICAL_DRIVES_8LD]; uint8_t prop[MAX_LOGICAL_DRIVES_8LD]; uint8_t state[MAX_LOGICAL_DRIVES_8LD];} __attribute__ ((packed)) mraid_ldrv_info_t;/** * mraid_pdrv_info_t - information about the physical drives * @pdrv_state : state of each physical drive */typedef struct { uint8_t pdrv_state[MBOX_MAX_PHYSICAL_DRIVES]; uint8_t rsvd;} __attribute__ ((packed)) mraid_pdrv_info_t;/** * mraid_inquiry_t - RAID inquiry, mailbox command 0x05 * @mraid_adapinfo_t : adapter information * @mraid_ldrv_info_t : logical drives information * @mraid_pdrv_info_t : physical drives information */typedef struct { mraid_adapinfo_t adapter_info; mraid_ldrv_info_t logdrv_info; mraid_pdrv_info_t pdrv_info;} __attribute__ ((packed)) mraid_inquiry_t;/** * mraid_extinq_t - RAID extended inquiry, mailbox command 0x04 * * @raid_inq : raid inquiry * @phys_drv_format : * @stack_attn : * @modem_status : * @rsvd : */typedef struct { mraid_inquiry_t raid_inq; uint16_t phys_drv_format[MAX_MBOX_CHANNELS]; uint8_t stack_attn; uint8_t modem_status; uint8_t rsvd[2];} __attribute__ ((packed)) mraid_extinq_t;/** * adap_device_t - device information * @channel : channel fpor the device * @target : target ID of the device */typedef struct { uint8_t channel; uint8_t target;}__attribute__ ((packed)) adap_device_t;/** * adap_span_40ld_t - 40LD span * @start_blk : starting block * @num_blks : number of blocks */typedef struct { uint32_t start_blk; uint32_t num_blks; adap_device_t device[MAX_ROW_SIZE_40LD];}__attribute__ ((packed)) adap_span_40ld_t;/** * adap_span_8ld_t - 8LD span * @start_blk : starting block * @num_blks : number of blocks */typedef struct { uint32_t start_blk; uint32_t num_blks; adap_device_t device[MAX_ROW_SIZE_8LD];}__attribute__ ((packed)) adap_span_8ld_t;/** * logdrv_param_t - logical drives parameters * * @span_depth : total number of spans * @level : RAID level * @read_ahead : read ahead, no read ahead, adaptive read ahead * @stripe_sz : encoded stripe size * @status : status of the logical drive * @write_mode : write mode, write_through/write_back * @direct_io : direct io or through cache * @row_size : number of stripes in a row */typedef struct { uint8_t span_depth; uint8_t level; uint8_t read_ahead; uint8_t stripe_sz; uint8_t status; uint8_t write_mode; uint8_t direct_io; uint8_t row_size;} __attribute__ ((packed)) logdrv_param_t;/** * logdrv_40ld_t - logical drive definition for 40LD controllers * @lparam : logical drives parameters * @span : span */typedef struct { logdrv_param_t lparam; adap_span_40ld_t span[SPAN_DEPTH_8_SPANS];}__attribute__ ((packed)) logdrv_40ld_t;/** * logdrv_8ld_span8_t - logical drive definition for 8LD controllers * @lparam : logical drives parameters * @span : span * * 8-LD logical drive with upto 8 spans */typedef struct { logdrv_param_t lparam; adap_span_8ld_t span[SPAN_DEPTH_8_SPANS];}__attribute__ ((packed)) logdrv_8ld_span8_t;/** * logdrv_8ld_span4_t - logical drive definition for 8LD controllers * @lparam : logical drives parameters * @span : span * * 8-LD logical drive with upto 4 spans */typedef struct { logdrv_param_t lparam; adap_span_8ld_t span[SPAN_DEPTH_4_SPANS];}__attribute__ ((packed)) logdrv_8ld_span4_t;/** * phys_drive_t - physical device information * @type : Type of the device * @cur_status : current status of the device * @tag_depth : Level of tagging * @sync_neg : sync negotiation - ENABLE or DISBALE * @size : configurable size in terms of 512 byte */typedef struct { uint8_t type; uint8_t cur_status; uint8_t tag_depth; uint8_t sync_neg; uint32_t size;}__attribute__ ((packed)) phys_drive_t;/** * disk_array_40ld_t - disk array for 40LD controllers * @numldrv : number of logical drives * @resvd : * @ldrv : logical drives information * @pdrv : physical drives information */typedef struct { uint8_t numldrv; uint8_t resvd[3]; logdrv_40ld_t ldrv[MAX_LOGICAL_DRIVES_40LD]; phys_drive_t pdrv[MBOX_MAX_PHYSICAL_DRIVES];}__attribute__ ((packed)) disk_array_40ld_t;/** * disk_array_8ld_span8_t - disk array for 8LD controllers * @numldrv : number of logical drives * @resvd : * @ldrv : logical drives information * @pdrv : physical drives information * * Disk array for 8LD logical drives with upto 8 spans */typedef struct { uint8_t numldrv; uint8_t resvd[3]; logdrv_8ld_span8_t ldrv[MAX_LOGICAL_DRIVES_8LD]; phys_drive_t pdrv[MBOX_MAX_PHYSICAL_DRIVES];}__attribute__ ((packed)) disk_array_8ld_span8_t;/** * disk_array_8ld_span4_t - disk array for 8LD controllers * @numldrv : number of logical drives * @resvd : * @ldrv : logical drives information * @pdrv : physical drives information * * Disk array for 8LD logical drives with upto 4 spans */typedef struct { uint8_t numldrv; uint8_t resvd[3]; logdrv_8ld_span4_t ldrv[MAX_LOGICAL_DRIVES_8LD]; phys_drive_t pdrv[MBOX_MAX_PHYSICAL_DRIVES];}__attribute__ ((packed)) disk_array_8ld_span4_t;/** * private_bios_data - bios private data for boot devices * @geometry : bits 0-3 - BIOS geometry, 0x0001 - 1GB, 0x0010 - 2GB, * 0x1000 - 8GB, Others values are invalid * @unused : bits 4-7 are unused * @boot_drv : logical drive set as boot drive, 0..7 - for 8LD cards, * 0..39 - for 40LD cards * @cksum : 0-(sum of first 13 bytes of this structure) */struct private_bios_data { uint8_t geometry :4; uint8_t unused :4; uint8_t boot_drv; uint8_t rsvd[12]; uint16_t cksum;} __attribute__ ((packed));/** * mbox_sgl64 - 64-bit scatter list for mailbox based controllers * @address : address of the buffer * @length : data transfer length */typedef struct { uint64_t address; uint32_t length;} __attribute__ ((packed)) mbox_sgl64;/** * mbox_sgl32 - 32-bit scatter list for mailbox based controllers * @address : address of the buffer * @length : data transfer length */typedef struct { uint32_t address; uint32_t length;} __attribute__ ((packed)) mbox_sgl32;#endif // _MRAID_MBOX_DEFS_H_/* vim: set ts=8 sw=8 tw=78: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -