Print this page
*** 10,21 ****
--- 10,52 ----
* Swaminathan K S
* Arun Chandrashekhar
* Manju R
* Rasheed
* Shakeel Bukhari
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the author nor the names of its contributors may be
+ * used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
*/
+ /*
+ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ */
+
#ifndef _MR_SAS_H_
#define _MR_SAS_H_
#ifdef __cplusplus
extern "C" {
*** 26,36 ****
#include "ld_pd_map.h"
/*
* MegaRAID SAS2.0 Driver meta data
*/
! #define MRSAS_VERSION "6.503.00.00JOYENT"
#define MRSAS_RELDATE "July 30, 2012"
#define MRSAS_TRUE 1
#define MRSAS_FALSE 0
--- 57,67 ----
#include "ld_pd_map.h"
/*
* MegaRAID SAS2.0 Driver meta data
*/
! #define MRSAS_VERSION "6.503.00.00ILLUMOS"
#define MRSAS_RELDATE "July 30, 2012"
#define MRSAS_TRUE 1
#define MRSAS_FALSE 0
*** 37,48 ****
#define ADAPTER_RESET_NOT_REQUIRED 0
#define ADAPTER_RESET_REQUIRED 1
#define PDSUPPORT 1
- #define SWAP_BYTES(w) ((((w)>>8)&0xFF) | (((w)&0xFF)<<8))
- #define BIG_ENDIAN(d) (SWAP_BYTES((d) >> 16) | (SWAP_BYTES(d) << 16))
/*
* MegaRAID SAS2.0 device id conversion definitions.
*/
#define INST2LSIRDCTL(x) ((x) << INST_MINOR_SHIFT)
#define MRSAS_GET_BOUNDARY_ALIGNED_LEN(len, new_len, boundary_len) { \
--- 68,77 ----
*** 51,61 ****
if ((rem * boundary_len) != len) { \
new_len = len + ((rem + 1) * boundary_len - len); \
} else { \
new_len = len; \
} \
! } \
/*
* MegaRAID SAS2.0 supported controllers
*/
--- 80,90 ----
if ((rem * boundary_len) != len) { \
new_len = len + ((rem + 1) * boundary_len - len); \
} else { \
new_len = len; \
} \
! }
/*
* MegaRAID SAS2.0 supported controllers
*/
*** 508,552 ****
uint16_t subsysid;
int instance;
int baseaddress;
char iocnode[16];
! /*Driver resources unroll flags.
! The flag is set for resources that are needed to be free'd at detach() time */
!
struct _unroll {
! uint8_t softs; // The software state was allocated.
! uint8_t regs; // Controller registers mapped.
! uint8_t intr; // Interrupt handler added.
! uint8_t reqs; // Request structs allocated.
! uint8_t mutexs; // Mutex's allocated.
! uint8_t taskq; // Task q's created.
! uint8_t tran; // Tran struct allocated
! uint8_t tranSetup; // Tran attached to the ddi.
! uint8_t devctl; // Device nodes for cfgadm created.
! uint8_t scsictl; // Device nodes for cfgadm created.
! uint8_t ioctl; // Device nodes for ioctl's created.
! uint8_t timer; // Timer started.
! uint8_t aenPend; // AEN cmd pending f/w.
! uint8_t mapUpdate_pend; // LD MAP update cmd pending f/w.
! uint8_t soft_isr;
! uint8_t ldlist_buff;
! uint8_t pdlist_buff;
! uint8_t syncCmd;
! uint8_t verBuff;
! uint8_t alloc_space_mfi;
! uint8_t alloc_space_mpi2;
} unroll;
/* function template pointer */
struct mrsas_function_template *func_ptr;
/* MSI interrupts specific */
! ddi_intr_handle_t *intr_htable; //Interrupt handle array
! size_t intr_htable_size; //Interrupt handle array size
int intr_type;
int intr_cnt;
uint_t intr_pri;
int intr_cap;
--- 537,583 ----
uint16_t subsysid;
int instance;
int baseaddress;
char iocnode[16];
! int fm_capabilities;
! /*
! * Driver resources unroll flags. The flag is set for resources that
! * are needed to be free'd at detach() time.
! */
struct _unroll {
! uint8_t softs; /* The software state was allocated. */
! uint8_t regs; /* Controller registers mapped. */
! uint8_t intr; /* Interrupt handler added. */
! uint8_t reqs; /* Request structs allocated. */
! uint8_t mutexs; /* Mutex's allocated. */
! uint8_t taskq; /* Task q's created. */
! uint8_t tran; /* Tran struct allocated */
! uint8_t tranSetup; /* Tran attached to the ddi. */
! uint8_t devctl; /* Device nodes for cfgadm created. */
! uint8_t scsictl; /* Device nodes for cfgadm created. */
! uint8_t ioctl; /* Device nodes for ioctl's created. */
! uint8_t timer; /* Timer started. */
! uint8_t aenPend; /* AEN cmd pending f/w. */
! uint8_t mapUpdate_pend; /* LD MAP update cmd pending f/w. */
! uint8_t soft_isr; /* Soft interrupt handler allocated. */
! uint8_t ldlist_buff; /* Logical disk list allocated. */
! uint8_t pdlist_buff; /* Physical disk list allocated. */
! uint8_t syncCmd; /* Sync map command allocated. */
! uint8_t verBuff; /* 2108 MFI buffer allocated. */
! uint8_t alloc_space_mfi; /* Allocated space for 2108 MFI. */
! uint8_t alloc_space_mpi2; /* Allocated space for 2208 MPI2. */
} unroll;
/* function template pointer */
struct mrsas_function_template *func_ptr;
/* MSI interrupts specific */
! ddi_intr_handle_t *intr_htable; /* Interrupt handle array */
! size_t intr_htable_size; /* Int. handle array size */
int intr_type;
int intr_cnt;
uint_t intr_pri;
int intr_cap;
*** 563,583 ****
uint8_t fast_path_io;
uint16_t tbolt;
uint16_t reply_read_index;
! uint16_t reply_size; // Single Reply structure size
! uint16_t raid_io_msg_size; // Single message size
uint32_t io_request_frames_phy;
uint8_t *io_request_frames;
! MRSAS_REQUEST_DESCRIPTOR_UNION *request_message_pool; // Virtual address of request desc frame pool
! uint32_t request_message_pool_phy; // Physical address of request desc frame pool
! MPI2_REPLY_DESCRIPTORS_UNION *reply_frame_pool; // Virtual address of reply Frame
! uint32_t reply_frame_pool_phy; // Physical address of reply Frame
! uint8_t *reply_pool_limit; // Last reply frame address
! uint32_t reply_pool_limit_phy; // Physical address of Last reply frame
! uint32_t reply_q_depth; // Reply Queue Depth
uint8_t max_sge_in_main_msg;
uint8_t max_sge_in_chain;
uint8_t chain_offset_io_req;
uint8_t chain_offset_mpt_msg;
MR_FW_RAID_MAP_ALL *ld_map[2];
--- 594,619 ----
uint8_t fast_path_io;
uint16_t tbolt;
uint16_t reply_read_index;
! uint16_t reply_size; /* Single Reply struct size */
! uint16_t raid_io_msg_size; /* Single message size */
uint32_t io_request_frames_phy;
uint8_t *io_request_frames;
! /* Virtual address of request desc frame pool */
! MRSAS_REQUEST_DESCRIPTOR_UNION *request_message_pool;
! /* Physical address of request desc frame pool */
! uint32_t request_message_pool_phy;
! /* Virtual address of reply Frame */
! MPI2_REPLY_DESCRIPTORS_UNION *reply_frame_pool;
! /* Physical address of reply Frame */
! uint32_t reply_frame_pool_phy;
! uint8_t *reply_pool_limit; /* Last reply frame address */
! /* Physical address of Last reply frame */
! uint32_t reply_pool_limit_phy;
! uint32_t reply_q_depth; /* Reply Queue Depth */
uint8_t max_sge_in_main_msg;
uint8_t max_sge_in_chain;
uint8_t chain_offset_io_req;
uint8_t chain_offset_mpt_msg;
MR_FW_RAID_MAP_ALL *ld_map[2];
*** 604,614 ****
struct mrsas_cmd *);
void (*enable_intr)(struct mrsas_instance *);
void (*disable_intr)(struct mrsas_instance *);
int (*intr_ack)(struct mrsas_instance *);
int (*init_adapter)(struct mrsas_instance *);
! // int (*reset_adapter)(struct mrsas_instance *);
};
/*
* ### Helper routines ###
*/
--- 640,650 ----
struct mrsas_cmd *);
void (*enable_intr)(struct mrsas_instance *);
void (*disable_intr)(struct mrsas_instance *);
int (*intr_ack)(struct mrsas_instance *);
int (*init_adapter)(struct mrsas_instance *);
! /* int (*reset_adapter)(struct mrsas_instance *); */
};
/*
* ### Helper routines ###
*/
*** 625,641 ****
*
* console messages debug levels
*/
#define CL_NONE 0 /* No debug information */
#define CL_ANN 1 /* print unconditionally, announcements */
! #define CL_ANN1 2 /* No o/p */
#define CL_DLEVEL1 3 /* debug level 1, informative */
#define CL_DLEVEL2 4 /* debug level 2, verbose */
#define CL_DLEVEL3 5 /* debug level 3, very verbose */
#ifdef __SUNPRO_C
! #define __func__ __FUNCTION__ //""
#endif
#define con_log(level, fmt) { if (debug_level_g >= level) cmn_err fmt; }
/*
--- 661,677 ----
*
* console messages debug levels
*/
#define CL_NONE 0 /* No debug information */
#define CL_ANN 1 /* print unconditionally, announcements */
! #define CL_ANN1 2 /* No-op */
#define CL_DLEVEL1 3 /* debug level 1, informative */
#define CL_DLEVEL2 4 /* debug level 2, verbose */
#define CL_DLEVEL3 5 /* debug level 3, very verbose */
#ifdef __SUNPRO_C
! #define __func__ ""
#endif
#define con_log(level, fmt) { if (debug_level_g >= level) cmn_err fmt; }
/*
*** 1915,2040 ****
#ifndef DDI_VENDOR_LSI
#define DDI_VENDOR_LSI "LSI"
#endif /* DDI_VENDOR_LSI */
- static int mrsas_getinfo(dev_info_t *, ddi_info_cmd_t, void *, void **);
- static int mrsas_attach(dev_info_t *, ddi_attach_cmd_t);
- static int mrsas_reset(dev_info_t *, ddi_reset_cmd_t);
- int mrsas_quiesce(dev_info_t *);
- static int mrsas_detach(dev_info_t *, ddi_detach_cmd_t);
- static int mrsas_open(dev_t *, int, int, cred_t *);
- static int mrsas_close(dev_t, int, int, cred_t *);
- static int mrsas_ioctl(dev_t, int, intptr_t, int, cred_t *, int *);
-
- static int mrsas_tran_tgt_init(dev_info_t *, dev_info_t *,
- scsi_hba_tran_t *, struct scsi_device *);
- static struct scsi_pkt *mrsas_tran_init_pkt(struct scsi_address *, register
- struct scsi_pkt *, struct buf *, int, int, int, int,
- int (*)(), caddr_t);
- static int mrsas_tran_start(struct scsi_address *,
- register struct scsi_pkt *);
- static int mrsas_tran_abort(struct scsi_address *, struct scsi_pkt *);
- static int mrsas_tran_reset(struct scsi_address *, int);
- static int mrsas_tran_bus_reset(dev_info_t *, int);
- static int mrsas_tran_getcap(struct scsi_address *, char *, int);
- static int mrsas_tran_setcap(struct scsi_address *, char *, int, int);
- static void mrsas_tran_destroy_pkt(struct scsi_address *,
- struct scsi_pkt *);
- static void mrsas_tran_dmafree(struct scsi_address *, struct scsi_pkt *);
- static void mrsas_tran_sync_pkt(struct scsi_address *, struct scsi_pkt *);
- static int mrsas_tran_quiesce(dev_info_t *dip);
- static int mrsas_tran_unquiesce(dev_info_t *dip);
- static uint_t mrsas_isr();
- static uint_t mrsas_softintr();
-
- static struct mrsas_cmd *get_mfi_pkt(struct mrsas_instance *);
- static void return_mfi_pkt(struct mrsas_instance *,
- struct mrsas_cmd *);
-
- static void free_space_for_mfi(struct mrsas_instance *);
- static int mrsas_tbolt_alloc_additional_dma_buffer
- (struct mrsas_instance *);
- int mrsas_tbolt_sync_map_info(struct mrsas_instance *instance);
- static int alloc_additional_dma_buffer(struct mrsas_instance *);
- static uint32_t read_fw_status_reg_ppc(struct mrsas_instance *);
- static void issue_cmd_ppc(struct mrsas_cmd *, struct mrsas_instance *);
- static int issue_cmd_in_poll_mode_ppc(struct mrsas_instance *,
- struct mrsas_cmd *);
- static int issue_cmd_in_sync_mode_ppc(struct mrsas_instance *,
- struct mrsas_cmd *);
- static void enable_intr_ppc(struct mrsas_instance *);
- static void disable_intr_ppc(struct mrsas_instance *);
- static int intr_ack_ppc(struct mrsas_instance *);
- int mfi_state_transition_to_ready(struct mrsas_instance *);
- static void flush_cache(struct mrsas_instance *instance);
- void display_scsi_inquiry(caddr_t);
- static int start_mfi_aen(struct mrsas_instance *instance);
- static int handle_drv_ioctl(struct mrsas_instance *instance,
- struct mrsas_ioctl *ioctl, int mode);
- static int handle_mfi_ioctl(struct mrsas_instance *instance,
- struct mrsas_ioctl *ioctl, int mode);
- static int handle_mfi_aen(struct mrsas_instance *instance,
- struct mrsas_aen *aen);
- void fill_up_drv_ver(struct mrsas_drv_ver *dv);
- static struct mrsas_cmd *build_cmd(struct mrsas_instance *instance,
- struct scsi_address *ap, struct scsi_pkt *pkt,
- uchar_t *cmd_done);
- static struct mrsas_cmd *mrsas_tbolt_build_cmd(struct mrsas_instance *instance,
- struct scsi_address *ap, struct scsi_pkt *pkt,
- uchar_t *cmd_done);
- static int wait_for_outstanding(struct mrsas_instance *instance);
- static int register_mfi_aen(struct mrsas_instance *instance,
- uint32_t seq_num, uint32_t class_locale_word);
- static int issue_mfi_pthru(struct mrsas_instance *instance, struct
- mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
- static int issue_mfi_dcmd(struct mrsas_instance *instance, struct
- mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
- static int issue_mfi_smp(struct mrsas_instance *instance, struct
- mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
- static int issue_mfi_stp(struct mrsas_instance *instance, struct
- mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
- static int abort_aen_cmd(struct mrsas_instance *instance,
- struct mrsas_cmd *cmd_to_abort);
-
-
- static void mrsas_rem_intrs(struct mrsas_instance *instance);
- static int mrsas_add_intrs(struct mrsas_instance *instance, int intr_type);
-
- static void mrsas_tran_tgt_free(dev_info_t *, dev_info_t *,
- scsi_hba_tran_t *, struct scsi_device *);
- static int mrsas_tran_bus_config(dev_info_t *, uint_t,
- ddi_bus_config_op_t, void *, dev_info_t **);
- static int mrsas_parse_devname(char *, int *, int *);
- static int mrsas_config_all_devices(struct mrsas_instance *);
int mrsas_config_scsi_device(struct mrsas_instance *,
struct scsi_device *, dev_info_t **);
- static int mrsas_config_ld(struct mrsas_instance *, uint16_t,
- uint8_t, dev_info_t **);
#ifdef PDSUPPORT
int mrsas_tbolt_config_pd(struct mrsas_instance *, uint16_t,
uint8_t, dev_info_t **);
- static void mrsas_tbolt_get_pd_info(struct mrsas_instance *,
- struct mrsas_tbolt_pd_info *, int);
#endif
! dev_info_t *mrsas_find_child(struct mrsas_instance *, uint16_t,
! uint8_t);
! static int mrsas_name_node(dev_info_t *, char *, int);
! static void mrsas_issue_evt_taskq(struct mrsas_eventinfo *);
! int mrsas_service_evt(struct mrsas_instance *, int, int, int,
! uint64_t);
! static void free_additional_dma_buffer(struct mrsas_instance *);
!
! struct mrsas_cmd *get_raid_msg_pkt(struct mrsas_instance *);
void return_raid_msg_pkt(struct mrsas_instance *, struct mrsas_cmd *);
struct mrsas_cmd *get_raid_msg_mfi_pkt(struct mrsas_instance *);
void return_raid_msg_mfi_pkt(struct mrsas_instance *, struct mrsas_cmd *);
int alloc_space_for_mpi2(struct mrsas_instance *);
! int alloc_additional_dma_buffer(struct mrsas_instance *);
int mrsas_issue_init_mpi2(struct mrsas_instance *);
struct scsi_pkt *mrsas_tbolt_tran_init_pkt(struct scsi_address *, register
struct scsi_pkt *, struct buf *, int, int, int, int,
int (*)(), caddr_t);
--- 1951,1976 ----
#ifndef DDI_VENDOR_LSI
#define DDI_VENDOR_LSI "LSI"
#endif /* DDI_VENDOR_LSI */
int mrsas_config_scsi_device(struct mrsas_instance *,
struct scsi_device *, dev_info_t **);
#ifdef PDSUPPORT
int mrsas_tbolt_config_pd(struct mrsas_instance *, uint16_t,
uint8_t, dev_info_t **);
#endif
! dev_info_t *mrsas_find_child(struct mrsas_instance *, uint16_t, uint8_t);
! int mrsas_service_evt(struct mrsas_instance *, int, int, int, uint64_t);
void return_raid_msg_pkt(struct mrsas_instance *, struct mrsas_cmd *);
struct mrsas_cmd *get_raid_msg_mfi_pkt(struct mrsas_instance *);
void return_raid_msg_mfi_pkt(struct mrsas_instance *, struct mrsas_cmd *);
int alloc_space_for_mpi2(struct mrsas_instance *);
! void fill_up_drv_ver(struct mrsas_drv_ver *dv);
int mrsas_issue_init_mpi2(struct mrsas_instance *);
struct scsi_pkt *mrsas_tbolt_tran_init_pkt(struct scsi_address *, register
struct scsi_pkt *, struct buf *, int, int, int, int,
int (*)(), caddr_t);
*** 2058,2098 ****
struct buf *, int, int (*)());
int mrsas_dma_move(struct mrsas_instance *,
struct scsi_pkt *, struct buf *);
int mrsas_alloc_dma_obj(struct mrsas_instance *, dma_obj_t *,
uchar_t);
- int mrsas_tbolt_ioc_init(struct mrsas_instance *, dma_obj_t *,
- ddi_acc_handle_t);
- int mrsas_tbolt_prepare_pkt(struct scsa_cmd *);
void mr_sas_tbolt_build_mfi_cmd(struct mrsas_instance *, struct mrsas_cmd *);
int mrsas_dma_alloc_dmd(struct mrsas_instance *, dma_obj_t *);
- int mr_sas_tbolt_build_sgl(struct mrsas_instance *,
- struct scsa_cmd *,
- struct mrsas_cmd *,
- Mpi2RaidSCSIIORequest_t *,
- uint32_t *);
void tbolt_complete_cmd_in_sync_mode(struct mrsas_instance *,
struct mrsas_cmd *);
int alloc_req_rep_desc(struct mrsas_instance *);
- static void complete_cmd_in_sync_mode(struct mrsas_instance *,
- struct mrsas_cmd *);
- static void io_timeout_checker(void *instance);
- static int mrsas_kill_adapter(struct mrsas_instance *);
int mrsas_mode_sense_build(struct scsi_pkt *);
void push_pending_mfi_pkt(struct mrsas_instance *,
struct mrsas_cmd *);
- static int mrsas_issue_init_mfi(struct mrsas_instance *);
int mrsas_issue_pending_cmds(struct mrsas_instance *);
int mrsas_print_pending_cmds(struct mrsas_instance *);
int mrsas_complete_pending_cmds(struct mrsas_instance *);
- static int mrsas_reset_ppc(struct mrsas_instance *);
- static uint32_t mrsas_initiate_ocr_if_fw_is_faulty(struct mrsas_instance *);
- MRSAS_REQUEST_DESCRIPTOR_UNION *\
- mr_sas_get_request_descriptor(struct mrsas_instance *,
- uint16_t, struct mrsas_cmd *);
-
int create_mfi_frame_pool(struct mrsas_instance *);
void destroy_mfi_frame_pool(struct mrsas_instance *);
int create_mfi_mpi_frame_pool(struct mrsas_instance *);
void destroy_mfi_mpi_frame_pool(struct mrsas_instance *);
int create_mpi2_frame_pool(struct mrsas_instance *);
--- 1994,2015 ----
*** 2101,2138 ****
void mrsas_tbolt_free_additional_dma_buffer(struct mrsas_instance *);
void free_req_desc_pool(struct mrsas_instance *);
void free_space_for_mpi2(struct mrsas_instance *);
void mrsas_dump_reply_desc(struct mrsas_instance *);
void tbolt_complete_cmd(struct mrsas_instance *, struct mrsas_cmd *);
- void io_timeout_checker(void *);
void display_scsi_inquiry(caddr_t);
void service_mfi_aen(struct mrsas_instance *, struct mrsas_cmd *);
int mrsas_mode_sense_build(struct scsi_pkt *);
int mrsas_tbolt_get_ld_map_info(struct mrsas_instance *);
- void mrsas_tbolt_set_pd_lba(U8 cdb[], uint8_t *cdb_len, U64 start_blk, U32 num_blocks, U8 DifCapable);
- U8 mrsas_tbolt_check_map_info(struct mrsas_instance *);
struct mrsas_cmd *mrsas_tbolt_build_poll_cmd(struct mrsas_instance *,
struct scsi_address *, struct scsi_pkt *, uchar_t *);
int mrsas_tbolt_reset_ppc(struct mrsas_instance *instance);
! int mrsas_tbolt_kill_adapter(struct mrsas_instance *instance);
int abort_syncmap_cmd(struct mrsas_instance *, struct mrsas_cmd *);
! void mrsas_tbolt_prepare_cdb(struct mrsas_instance *instance, U8 cdb[],struct IO_REQUEST_INFO *,
! Mpi2RaidSCSIIORequest_t *, U32);
! static int
! mrsas_undo_resources (dev_info_t *dip, struct mrsas_instance *instance);
- int mrsas_init_adapter_ppc (struct mrsas_instance *instance);
- int mrsas_init_adapter_tbolt (struct mrsas_instance *instance);
- int mrsas_init_adapter (struct mrsas_instance *instance);
-
int mrsas_alloc_cmd_pool(struct mrsas_instance *instance);
void mrsas_free_cmd_pool(struct mrsas_instance *instance);
! void mrsas_print_cmd_details(struct mrsas_instance *, struct mrsas_cmd *, int );
#ifdef __cplusplus
}
#endif
#endif /* _MR_SAS_H_ */
--- 2018,2058 ----
void mrsas_tbolt_free_additional_dma_buffer(struct mrsas_instance *);
void free_req_desc_pool(struct mrsas_instance *);
void free_space_for_mpi2(struct mrsas_instance *);
void mrsas_dump_reply_desc(struct mrsas_instance *);
void tbolt_complete_cmd(struct mrsas_instance *, struct mrsas_cmd *);
void display_scsi_inquiry(caddr_t);
void service_mfi_aen(struct mrsas_instance *, struct mrsas_cmd *);
int mrsas_mode_sense_build(struct scsi_pkt *);
int mrsas_tbolt_get_ld_map_info(struct mrsas_instance *);
struct mrsas_cmd *mrsas_tbolt_build_poll_cmd(struct mrsas_instance *,
struct scsi_address *, struct scsi_pkt *, uchar_t *);
int mrsas_tbolt_reset_ppc(struct mrsas_instance *instance);
! void mrsas_tbolt_kill_adapter(struct mrsas_instance *instance);
int abort_syncmap_cmd(struct mrsas_instance *, struct mrsas_cmd *);
! void mrsas_tbolt_prepare_cdb(struct mrsas_instance *instance, U8 cdb[],
! struct IO_REQUEST_INFO *, Mpi2RaidSCSIIORequest_t *, U32);
! int mrsas_init_adapter_ppc(struct mrsas_instance *instance);
! int mrsas_init_adapter_tbolt(struct mrsas_instance *instance);
! int mrsas_init_adapter(struct mrsas_instance *instance);
int mrsas_alloc_cmd_pool(struct mrsas_instance *instance);
void mrsas_free_cmd_pool(struct mrsas_instance *instance);
! void mrsas_print_cmd_details(struct mrsas_instance *, struct mrsas_cmd *, int);
! struct mrsas_cmd *get_raid_msg_pkt(struct mrsas_instance *);
+ int mfi_state_transition_to_ready(struct mrsas_instance *);
+
+
+ /* FMA functions. */
+ int mrsas_common_check(struct mrsas_instance *, struct mrsas_cmd *);
+ void mrsas_fm_ereport(struct mrsas_instance *, char *);
+
+
#ifdef __cplusplus
}
#endif
#endif /* _MR_SAS_H_ */