Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "This is mostly updates to the usual drivers: mpt3sas, lpfc, qla2xxx, hisi_sas, smartpqi, megaraid_sas, arcmsr. In addition, with the continuing absence of Nic we have target updates for tcmu and target core (all with reviews and acks). The biggest observable change is going to be that we're (again) trying to switch to mulitqueue as the default (a user can still override the setting on the kernel command line). Other major core stuff is the removal of the remaining Microchannel drivers, an update of the internal timers and some reworks of completion and result handling" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (203 commits) scsi: core: use blk_mq_run_hw_queues in scsi_kick_queue scsi: ufs: remove unnecessary query(DM) UPIU trace scsi: qla2xxx: Fix issue reported by static checker for qla2x00_els_dcmd2_sp_done() scsi: aacraid: Spelling fix in comment scsi: mpt3sas: Fix calltrace observed while running IO & reset scsi: aic94xx: fix an error code in aic94xx_init() scsi: st: remove redundant pointer STbuffer scsi: qla2xxx: Update driver version to 10.00.00.08-k scsi: qla2xxx: Migrate NVME N2N handling into state machine scsi: qla2xxx: Save frame payload size from ICB scsi: qla2xxx: Fix stalled relogin scsi: qla2xxx: Fix race between switch cmd completion and timeout scsi: qla2xxx: Fix Management Server NPort handle reservation logic scsi: qla2xxx: Flush mailbox commands on chip reset scsi: qla2xxx: Fix unintended Logout scsi: qla2xxx: Fix session state stuck in Get Port DB scsi: qla2xxx: Fix redundant fc_rport registration scsi: qla2xxx: Silent erroneous message scsi: qla2xxx: Prevent sysfs access when chip is down scsi: qla2xxx: Add longer window for chip reset ...
Šī revīzija ir iekļauta:
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Ielādēt izmaiņas
@@ -74,8 +74,8 @@
|
||||
#define MPT3SAS_DRIVER_NAME "mpt3sas"
|
||||
#define MPT3SAS_AUTHOR "Avago Technologies <MPT-FusionLinux.pdl@avagotech.com>"
|
||||
#define MPT3SAS_DESCRIPTION "LSI MPT Fusion SAS 3.0 Device Driver"
|
||||
#define MPT3SAS_DRIVER_VERSION "25.100.00.00"
|
||||
#define MPT3SAS_MAJOR_VERSION 25
|
||||
#define MPT3SAS_DRIVER_VERSION "26.100.00.00"
|
||||
#define MPT3SAS_MAJOR_VERSION 26
|
||||
#define MPT3SAS_MINOR_VERSION 100
|
||||
#define MPT3SAS_BUILD_VERSION 0
|
||||
#define MPT3SAS_RELEASE_VERSION 00
|
||||
@@ -143,21 +143,17 @@
|
||||
* NVMe defines
|
||||
*/
|
||||
#define NVME_PRP_SIZE 8 /* PRP size */
|
||||
#define NVME_CMD_PRP1_OFFSET 24 /* PRP1 offset in NVMe cmd */
|
||||
#define NVME_CMD_PRP2_OFFSET 32 /* PRP2 offset in NVMe cmd */
|
||||
#define NVME_ERROR_RESPONSE_SIZE 16 /* Max NVME Error Response */
|
||||
#define NVME_TASK_ABORT_MIN_TIMEOUT 6
|
||||
#define NVME_TASK_ABORT_MAX_TIMEOUT 60
|
||||
#define NVME_TASK_MNGT_CUSTOM_MASK (0x0010)
|
||||
#define NVME_PRP_PAGE_SIZE 4096 /* Page size */
|
||||
|
||||
|
||||
/*
|
||||
* reset phases
|
||||
*/
|
||||
#define MPT3_IOC_PRE_RESET 1 /* prior to host reset */
|
||||
#define MPT3_IOC_AFTER_RESET 2 /* just after host reset */
|
||||
#define MPT3_IOC_DONE_RESET 3 /* links re-initialized */
|
||||
struct mpt3sas_nvme_cmd {
|
||||
u8 rsvd[24];
|
||||
__le64 prp1;
|
||||
__le64 prp2;
|
||||
};
|
||||
|
||||
/*
|
||||
* logging format
|
||||
@@ -323,6 +319,7 @@
|
||||
* There are twelve Supplemental Reply Post Host Index Registers
|
||||
* and each register is at offset 0x10 bytes from the previous one.
|
||||
*/
|
||||
#define MAX_COMBINED_MSIX_VECTORS(gen35) ((gen35 == 1) ? 16 : 8)
|
||||
#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G3 12
|
||||
#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_COUNT_G35 16
|
||||
#define MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET (0x10)
|
||||
@@ -1162,7 +1159,6 @@ struct MPT3SAS_ADAPTER {
|
||||
struct mutex reset_in_progress_mutex;
|
||||
spinlock_t ioc_reset_in_progress_lock;
|
||||
u8 ioc_link_reset_in_progress;
|
||||
u8 ioc_reset_in_progress_status;
|
||||
|
||||
u8 ignore_loginfos;
|
||||
u8 remove_host;
|
||||
@@ -1482,13 +1478,17 @@ int mpt3sas_port_enable(struct MPT3SAS_ADAPTER *ioc);
|
||||
void
|
||||
mpt3sas_wait_for_commands_to_complete(struct MPT3SAS_ADAPTER *ioc);
|
||||
|
||||
u8 mpt3sas_base_check_cmd_timeout(struct MPT3SAS_ADAPTER *ioc,
|
||||
u8 status, void *mpi_request, int sz);
|
||||
|
||||
/* scsih shared API */
|
||||
struct scsi_cmnd *mpt3sas_scsih_scsi_lookup_get(struct MPT3SAS_ADAPTER *ioc,
|
||||
u16 smid);
|
||||
u8 mpt3sas_scsih_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
|
||||
u32 reply);
|
||||
void mpt3sas_scsih_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase);
|
||||
void mpt3sas_scsih_pre_reset_handler(struct MPT3SAS_ADAPTER *ioc);
|
||||
void mpt3sas_scsih_after_reset_handler(struct MPT3SAS_ADAPTER *ioc);
|
||||
void mpt3sas_scsih_reset_done_handler(struct MPT3SAS_ADAPTER *ioc);
|
||||
|
||||
int mpt3sas_scsih_issue_tm(struct MPT3SAS_ADAPTER *ioc, u16 handle, u64 lun,
|
||||
u8 type, u16 smid_task, u16 msix_task, u8 timeout, u8 tr_method);
|
||||
@@ -1615,7 +1615,9 @@ void mpt3sas_ctl_init(ushort hbas_to_enumerate);
|
||||
void mpt3sas_ctl_exit(ushort hbas_to_enumerate);
|
||||
u8 mpt3sas_ctl_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
u32 reply);
|
||||
void mpt3sas_ctl_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase);
|
||||
void mpt3sas_ctl_pre_reset_handler(struct MPT3SAS_ADAPTER *ioc);
|
||||
void mpt3sas_ctl_after_reset_handler(struct MPT3SAS_ADAPTER *ioc);
|
||||
void mpt3sas_ctl_reset_done_handler(struct MPT3SAS_ADAPTER *ioc);
|
||||
u8 mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc,
|
||||
u8 msix_index, u32 reply);
|
||||
void mpt3sas_ctl_add_to_event_log(struct MPT3SAS_ADAPTER *ioc,
|
||||
|
@@ -198,7 +198,7 @@ _config_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid,
|
||||
*
|
||||
* A wrapper for obtaining dma-able memory for config page request.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_config_alloc_config_dma_memory(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -230,7 +230,7 @@ _config_alloc_config_dma_memory(struct MPT3SAS_ADAPTER *ioc,
|
||||
*
|
||||
* A wrapper to free dma-able memory when using _config_alloc_config_dma_memory.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static void
|
||||
_config_free_config_dma_memory(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -251,8 +251,8 @@ _config_free_config_dma_memory(struct MPT3SAS_ADAPTER *ioc,
|
||||
*
|
||||
* The callback handler when using _config_request.
|
||||
*
|
||||
* Return 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
* Return: 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
*/
|
||||
u8
|
||||
mpt3sas_config_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
@@ -295,7 +295,7 @@ mpt3sas_config_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
*
|
||||
* The callback index is set inside `ioc->config_cb_idx.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
|
||||
@@ -406,10 +406,9 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
|
||||
mpt3sas_base_put_smid_default(ioc, smid);
|
||||
wait_for_completion_timeout(&ioc->config_cmds.done, timeout*HZ);
|
||||
if (!(ioc->config_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
pr_err(MPT3SAS_FMT "%s: timeout\n",
|
||||
ioc->name, __func__);
|
||||
_debug_dump_mf(mpi_request,
|
||||
sizeof(Mpi2ConfigRequest_t)/4);
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->config_cmds.status, mpi_request,
|
||||
sizeof(Mpi2ConfigRequest_t)/4);
|
||||
retry_count++;
|
||||
if (ioc->config_cmds.smid == smid)
|
||||
mpt3sas_base_free_smid(ioc, smid);
|
||||
@@ -519,7 +518,7 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_manufacturing_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -556,7 +555,7 @@ mpt3sas_config_get_manufacturing_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @sz: size of buffer passed in config_page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_manufacturing_pg7(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -593,7 +592,7 @@ mpt3sas_config_get_manufacturing_pg7(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_manufacturing_pg10(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -630,7 +629,7 @@ mpt3sas_config_get_manufacturing_pg10(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_manufacturing_pg11(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -667,7 +666,7 @@ mpt3sas_config_get_manufacturing_pg11(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_set_manufacturing_pg11(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -708,7 +707,7 @@ mpt3sas_config_set_manufacturing_pg11(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_bios_pg2(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -744,7 +743,7 @@ mpt3sas_config_get_bios_pg2(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_bios_pg3(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -780,7 +779,7 @@ mpt3sas_config_get_bios_pg3(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_iounit_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -816,7 +815,7 @@ mpt3sas_config_get_iounit_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -852,7 +851,7 @@ mpt3sas_config_get_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_set_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -889,7 +888,7 @@ mpt3sas_config_set_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @sz: size of buffer passed in config_page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_iounit_pg3(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -924,7 +923,7 @@ mpt3sas_config_get_iounit_pg3(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_iounit_pg8(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -960,7 +959,7 @@ mpt3sas_config_get_iounit_pg8(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @config_page: contents of the config page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_ioc_pg8(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -998,7 +997,7 @@ mpt3sas_config_get_ioc_pg8(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @handle: device handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_sas_device_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1039,7 +1038,7 @@ mpt3sas_config_get_sas_device_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @handle: device handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_sas_device_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1080,7 +1079,7 @@ mpt3sas_config_get_sas_device_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @handle: device handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_pcie_device_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1121,7 +1120,7 @@ out:
|
||||
* @handle: device handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_pcie_device_pg2(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1159,7 +1158,7 @@ out:
|
||||
* @num_phys: pointer returned with the number of phys
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_number_hba_phys(struct MPT3SAS_ADAPTER *ioc, u8 *num_phys)
|
||||
@@ -1209,7 +1208,7 @@ mpt3sas_config_get_number_hba_phys(struct MPT3SAS_ADAPTER *ioc, u8 *num_phys)
|
||||
* Calling function should call config_get_number_hba_phys prior to
|
||||
* this function, so enough memory is allocated for config_page.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_sas_iounit_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1250,7 +1249,7 @@ mpt3sas_config_get_sas_iounit_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
* Calling function should call config_get_number_hba_phys prior to
|
||||
* this function, so enough memory is allocated for config_page.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_sas_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1291,7 +1290,7 @@ mpt3sas_config_get_sas_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
* Calling function should call config_get_number_hba_phys prior to
|
||||
* this function, so enough memory is allocated for config_page.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_set_sas_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1333,7 +1332,7 @@ mpt3sas_config_set_sas_iounit_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @handle: expander handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_expander_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -1373,7 +1372,7 @@ mpt3sas_config_get_expander_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @handle: expander handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_expander_pg1(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -1416,7 +1415,7 @@ mpt3sas_config_get_expander_pg1(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @handle: expander handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_enclosure_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -1455,7 +1454,7 @@ mpt3sas_config_get_enclosure_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @phy_number: phy number
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_phy_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -1495,7 +1494,7 @@ mpt3sas_config_get_phy_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @phy_number: phy number
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_phy_pg1(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -1536,7 +1535,7 @@ mpt3sas_config_get_phy_pg1(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @handle: volume handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_raid_volume_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1574,7 +1573,7 @@ mpt3sas_config_get_raid_volume_pg1(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @num_pds: returns pds count
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_number_pds(struct MPT3SAS_ADAPTER *ioc, u16 handle,
|
||||
@@ -1626,7 +1625,7 @@ mpt3sas_config_get_number_pds(struct MPT3SAS_ADAPTER *ioc, u16 handle,
|
||||
* @sz: size of buffer passed in config_page
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_raid_volume_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1665,7 +1664,7 @@ mpt3sas_config_get_raid_volume_pg0(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @form_specific: specific to the form
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_phys_disk_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
@@ -1704,7 +1703,7 @@ mpt3sas_config_get_phys_disk_pg0(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigReply_t
|
||||
* @volume_handle: volume handle
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_volume_handle(struct MPT3SAS_ADAPTER *ioc, u16 pd_handle,
|
||||
@@ -1794,7 +1793,7 @@ mpt3sas_config_get_volume_handle(struct MPT3SAS_ADAPTER *ioc, u16 pd_handle,
|
||||
* @wwid: volume wwid
|
||||
* Context: sleep.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_config_get_volume_wwid(struct MPT3SAS_ADAPTER *ioc, u16 volume_handle,
|
||||
|
@@ -253,8 +253,8 @@ _ctl_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid,
|
||||
*
|
||||
* The callback handler when using ioc->ctl_cb_idx.
|
||||
*
|
||||
* Return 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
* Return: 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
*/
|
||||
u8
|
||||
mpt3sas_ctl_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
@@ -317,7 +317,7 @@ mpt3sas_ctl_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
* The bitmask in ioc->event_type[] indicates which events should be
|
||||
* be saved in the driver event_log. This bitmask is set by application.
|
||||
*
|
||||
* Returns 1 when event should be captured, or zero means no match.
|
||||
* Return: 1 when event should be captured, or zero means no match.
|
||||
*/
|
||||
static int
|
||||
_ctl_check_event_type(struct MPT3SAS_ADAPTER *ioc, u16 event)
|
||||
@@ -339,8 +339,6 @@ _ctl_check_event_type(struct MPT3SAS_ADAPTER *ioc, u16 event)
|
||||
* mpt3sas_ctl_add_to_event_log - add event
|
||||
* @ioc: per adapter object
|
||||
* @mpi_reply: reply message frame
|
||||
*
|
||||
* Return nothing.
|
||||
*/
|
||||
void
|
||||
mpt3sas_ctl_add_to_event_log(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -395,8 +393,8 @@ mpt3sas_ctl_add_to_event_log(struct MPT3SAS_ADAPTER *ioc,
|
||||
* This function merely adds a new work task into ioc->firmware_event_thread.
|
||||
* The tasks are worked from _firmware_event_work in user context.
|
||||
*
|
||||
* Return 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
* Return: 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
*/
|
||||
u8
|
||||
mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
|
||||
@@ -412,12 +410,12 @@ mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
|
||||
|
||||
/**
|
||||
* _ctl_verify_adapter - validates ioc_number passed from application
|
||||
* @ioc: per adapter object
|
||||
* @ioc_number: ?
|
||||
* @iocpp: The ioc pointer is returned in this.
|
||||
* @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device &
|
||||
* MPI25_VERSION | MPI26_VERSION for mpt3ctl ioctl device.
|
||||
*
|
||||
* Return (-1) means error, else ioc_number.
|
||||
* Return: (-1) means error, else ioc_number.
|
||||
*/
|
||||
static int
|
||||
_ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp,
|
||||
@@ -460,65 +458,74 @@ out:
|
||||
/**
|
||||
* mpt3sas_ctl_reset_handler - reset callback handler (for ctl)
|
||||
* @ioc: per adapter object
|
||||
* @reset_phase: phase
|
||||
*
|
||||
* The handler for doing any required cleanup or initialization.
|
||||
*
|
||||
* The reset phase can be MPT3_IOC_PRE_RESET, MPT3_IOC_AFTER_RESET,
|
||||
* MPT3_IOC_DONE_RESET
|
||||
*/
|
||||
void
|
||||
mpt3sas_ctl_reset_handler(struct MPT3SAS_ADAPTER *ioc, int reset_phase)
|
||||
void mpt3sas_ctl_pre_reset_handler(struct MPT3SAS_ADAPTER *ioc)
|
||||
{
|
||||
int i;
|
||||
u8 issue_reset;
|
||||
|
||||
switch (reset_phase) {
|
||||
case MPT3_IOC_PRE_RESET:
|
||||
dtmprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
dtmprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
"%s: MPT3_IOC_PRE_RESET\n", ioc->name, __func__));
|
||||
for (i = 0; i < MPI2_DIAG_BUF_TYPE_COUNT; i++) {
|
||||
if (!(ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_REGISTERED))
|
||||
continue;
|
||||
if ((ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_RELEASED))
|
||||
continue;
|
||||
mpt3sas_send_diag_release(ioc, i, &issue_reset);
|
||||
}
|
||||
break;
|
||||
case MPT3_IOC_AFTER_RESET:
|
||||
dtmprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
for (i = 0; i < MPI2_DIAG_BUF_TYPE_COUNT; i++) {
|
||||
if (!(ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_REGISTERED))
|
||||
continue;
|
||||
if ((ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_RELEASED))
|
||||
continue;
|
||||
mpt3sas_send_diag_release(ioc, i, &issue_reset);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* mpt3sas_ctl_reset_handler - reset callback handler (for ctl)
|
||||
* @ioc: per adapter object
|
||||
*
|
||||
* The handler for doing any required cleanup or initialization.
|
||||
*/
|
||||
void mpt3sas_ctl_after_reset_handler(struct MPT3SAS_ADAPTER *ioc)
|
||||
{
|
||||
dtmprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
"%s: MPT3_IOC_AFTER_RESET\n", ioc->name, __func__));
|
||||
if (ioc->ctl_cmds.status & MPT3_CMD_PENDING) {
|
||||
ioc->ctl_cmds.status |= MPT3_CMD_RESET;
|
||||
mpt3sas_base_free_smid(ioc, ioc->ctl_cmds.smid);
|
||||
complete(&ioc->ctl_cmds.done);
|
||||
}
|
||||
break;
|
||||
case MPT3_IOC_DONE_RESET:
|
||||
dtmprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
if (ioc->ctl_cmds.status & MPT3_CMD_PENDING) {
|
||||
ioc->ctl_cmds.status |= MPT3_CMD_RESET;
|
||||
mpt3sas_base_free_smid(ioc, ioc->ctl_cmds.smid);
|
||||
complete(&ioc->ctl_cmds.done);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* mpt3sas_ctl_reset_handler - reset callback handler (for ctl)
|
||||
* @ioc: per adapter object
|
||||
*
|
||||
* The handler for doing any required cleanup or initialization.
|
||||
*/
|
||||
void mpt3sas_ctl_reset_done_handler(struct MPT3SAS_ADAPTER *ioc)
|
||||
{
|
||||
int i;
|
||||
|
||||
dtmprintk(ioc, pr_info(MPT3SAS_FMT
|
||||
"%s: MPT3_IOC_DONE_RESET\n", ioc->name, __func__));
|
||||
|
||||
for (i = 0; i < MPI2_DIAG_BUF_TYPE_COUNT; i++) {
|
||||
if (!(ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_REGISTERED))
|
||||
continue;
|
||||
if ((ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_RELEASED))
|
||||
continue;
|
||||
ioc->diag_buffer_status[i] |=
|
||||
MPT3_DIAG_BUFFER_IS_DIAG_RESET;
|
||||
}
|
||||
break;
|
||||
for (i = 0; i < MPI2_DIAG_BUF_TYPE_COUNT; i++) {
|
||||
if (!(ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_REGISTERED))
|
||||
continue;
|
||||
if ((ioc->diag_buffer_status[i] &
|
||||
MPT3_DIAG_BUFFER_IS_RELEASED))
|
||||
continue;
|
||||
ioc->diag_buffer_status[i] |=
|
||||
MPT3_DIAG_BUFFER_IS_DIAG_RESET;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* _ctl_fasync -
|
||||
* @fd -
|
||||
* @filep -
|
||||
* @mode -
|
||||
* @fd: ?
|
||||
* @filep: ?
|
||||
* @mode: ?
|
||||
*
|
||||
* Called when application request fasyn callback handler.
|
||||
*/
|
||||
@@ -530,8 +537,8 @@ _ctl_fasync(int fd, struct file *filep, int mode)
|
||||
|
||||
/**
|
||||
* _ctl_poll -
|
||||
* @file -
|
||||
* @wait -
|
||||
* @filep: ?
|
||||
* @wait: ?
|
||||
*
|
||||
*/
|
||||
static __poll_t
|
||||
@@ -556,10 +563,10 @@ _ctl_poll(struct file *filep, poll_table *wait)
|
||||
/**
|
||||
* _ctl_set_task_mid - assign an active smid to tm request
|
||||
* @ioc: per adapter object
|
||||
* @karg - (struct mpt3_ioctl_command)
|
||||
* @tm_request - pointer to mf from user space
|
||||
* @karg: (struct mpt3_ioctl_command)
|
||||
* @tm_request: pointer to mf from user space
|
||||
*
|
||||
* Returns 0 when an smid if found, else fail.
|
||||
* Return: 0 when an smid if found, else fail.
|
||||
* during failure, the reply frame is filled.
|
||||
*/
|
||||
static int
|
||||
@@ -634,8 +641,8 @@ _ctl_set_task_mid(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command *karg,
|
||||
/**
|
||||
* _ctl_do_mpt_command - main handler for MPT3COMMAND opcode
|
||||
* @ioc: per adapter object
|
||||
* @karg - (struct mpt3_ioctl_command)
|
||||
* @mf - pointer to mf in user space
|
||||
* @karg: (struct mpt3_ioctl_command)
|
||||
* @mf: pointer to mf in user space
|
||||
*/
|
||||
static long
|
||||
_ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
|
||||
@@ -970,6 +977,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
|
||||
}
|
||||
/* drop to default case for posting the request */
|
||||
}
|
||||
/* fall through */
|
||||
default:
|
||||
ioc->build_sg_mpi(ioc, psge, data_out_dma, data_out_sz,
|
||||
data_in_dma, data_in_sz);
|
||||
@@ -995,11 +1003,10 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
|
||||
ioc->ignore_loginfos = 0;
|
||||
}
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name,
|
||||
__func__);
|
||||
_debug_dump_mf(mpi_request, karg.data_sge_offset);
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET))
|
||||
issue_reset = 1;
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
karg.data_sge_offset);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
|
||||
@@ -1114,7 +1121,7 @@ _ctl_do_mpt_command(struct MPT3SAS_ADAPTER *ioc, struct mpt3_ioctl_command karg,
|
||||
/**
|
||||
* _ctl_getiocinfo - main handler for MPT3IOCINFO opcode
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -1168,7 +1175,7 @@ _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_eventquery - main handler for MPT3EVENTQUERY opcode
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_eventquery(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -1199,7 +1206,7 @@ _ctl_eventquery(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_eventenable - main handler for MPT3EVENTENABLE opcode
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_eventenable(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -1237,7 +1244,7 @@ _ctl_eventenable(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_eventreport - main handler for MPT3EVENTREPORT opcode
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_eventreport(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -1281,7 +1288,7 @@ _ctl_eventreport(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_do_reset - main handler for MPT3HARDRESET opcode
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_do_reset(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -1419,7 +1426,7 @@ _ctl_btdh_search_raid_device(struct MPT3SAS_ADAPTER *ioc,
|
||||
/**
|
||||
* _ctl_btdh_mapping - main handler for MPT3BTDHMAPPING opcode
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_btdh_mapping(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -1621,12 +1628,10 @@ _ctl_diag_register_2(struct MPT3SAS_ADAPTER *ioc,
|
||||
MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name,
|
||||
__func__);
|
||||
_debug_dump_mf(mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4);
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET))
|
||||
issue_reset = 1;
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
|
||||
@@ -1719,7 +1724,7 @@ mpt3sas_enable_diag_buffer(struct MPT3SAS_ADAPTER *ioc, u8 bits_to_register)
|
||||
/**
|
||||
* _ctl_diag_register - application register with driver
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*
|
||||
* This will allow the driver to setup any required buffers that will be
|
||||
* needed by firmware to communicate with the driver.
|
||||
@@ -1743,7 +1748,7 @@ _ctl_diag_register(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_diag_unregister - application unregister with driver
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*
|
||||
* This will allow the driver to cleanup any memory allocated for diag
|
||||
* messages and to free up any resources.
|
||||
@@ -1816,7 +1821,7 @@ _ctl_diag_unregister(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_diag_query - query relevant info associated with diag buffers
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*
|
||||
* The application will send only buffer_type and unique_id. Driver will
|
||||
* inspect unique_id first, if valid, fill in all the info. If unique_id is
|
||||
@@ -1903,8 +1908,8 @@ _ctl_diag_query(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* mpt3sas_send_diag_release - Diag Release Message
|
||||
* @ioc: per adapter object
|
||||
* @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
|
||||
* @issue_reset - specifies whether host reset is required.
|
||||
* @buffer_type: specifies either TRACE, SNAPSHOT, or EXTENDED
|
||||
* @issue_reset: specifies whether host reset is required.
|
||||
*
|
||||
*/
|
||||
int
|
||||
@@ -1968,12 +1973,9 @@ mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type,
|
||||
MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name,
|
||||
__func__);
|
||||
_debug_dump_mf(mpi_request,
|
||||
sizeof(Mpi2DiagReleaseRequest_t)/4);
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET))
|
||||
*issue_reset = 1;
|
||||
*issue_reset = mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagReleaseRequest_t)/4);
|
||||
rc = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
@@ -2009,7 +2011,8 @@ mpt3sas_send_diag_release(struct MPT3SAS_ADAPTER *ioc, u8 buffer_type,
|
||||
|
||||
/**
|
||||
* _ctl_diag_release - request to send Diag Release Message to firmware
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @ioc: ?
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*
|
||||
* This allows ownership of the specified buffer to returned to the driver,
|
||||
* allowing an application to read the buffer without fear that firmware is
|
||||
@@ -2098,7 +2101,7 @@ _ctl_diag_release(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_diag_read_buffer - request for copy of the diag buffer
|
||||
* @ioc: per adapter object
|
||||
* @arg - user space buffer containing ioctl content
|
||||
* @arg: user space buffer containing ioctl content
|
||||
*/
|
||||
static long
|
||||
_ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
@@ -2235,12 +2238,10 @@ _ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
MPT3_IOCTL_DEFAULT_TIMEOUT*HZ);
|
||||
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_COMPLETE)) {
|
||||
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc->name,
|
||||
__func__);
|
||||
_debug_dump_mf(mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4);
|
||||
if (!(ioc->ctl_cmds.status & MPT3_CMD_RESET))
|
||||
issue_reset = 1;
|
||||
issue_reset =
|
||||
mpt3sas_base_check_cmd_timeout(ioc,
|
||||
ioc->ctl_cmds.status, mpi_request,
|
||||
sizeof(Mpi2DiagBufferPostRequest_t)/4);
|
||||
goto issue_host_reset;
|
||||
}
|
||||
|
||||
@@ -2284,8 +2285,8 @@ _ctl_diag_read_buffer(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
|
||||
/**
|
||||
* _ctl_compat_mpt_command - convert 32bit pointers to 64bit.
|
||||
* @ioc: per adapter object
|
||||
* @cmd - ioctl opcode
|
||||
* @arg - (struct mpt3_ioctl_command32)
|
||||
* @cmd: ioctl opcode
|
||||
* @arg: (struct mpt3_ioctl_command32)
|
||||
*
|
||||
* MPT3COMMAND32 - Handle 32bit applications running on 64bit os.
|
||||
*/
|
||||
@@ -2328,10 +2329,10 @@ _ctl_compat_mpt_command(struct MPT3SAS_ADAPTER *ioc, unsigned cmd,
|
||||
|
||||
/**
|
||||
* _ctl_ioctl_main - main ioctl entry point
|
||||
* @file - (struct file)
|
||||
* @cmd - ioctl opcode
|
||||
* @arg - user space data buffer
|
||||
* @compat - handles 32 bit applications in 64bit os
|
||||
* @file: (struct file)
|
||||
* @cmd: ioctl opcode
|
||||
* @arg: user space data buffer
|
||||
* @compat: handles 32 bit applications in 64bit os
|
||||
* @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device &
|
||||
* MPI25_VERSION | MPI26_VERSION for mpt3ctl ioctl device.
|
||||
*/
|
||||
@@ -2462,9 +2463,9 @@ out_unlock_pciaccess:
|
||||
|
||||
/**
|
||||
* _ctl_ioctl - mpt3ctl main ioctl entry point (unlocked)
|
||||
* @file - (struct file)
|
||||
* @cmd - ioctl opcode
|
||||
* @arg -
|
||||
* @file: (struct file)
|
||||
* @cmd: ioctl opcode
|
||||
* @arg: ?
|
||||
*/
|
||||
static long
|
||||
_ctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
@@ -2482,9 +2483,9 @@ _ctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
|
||||
/**
|
||||
* _ctl_mpt2_ioctl - mpt2ctl main ioctl entry point (unlocked)
|
||||
* @file - (struct file)
|
||||
* @cmd - ioctl opcode
|
||||
* @arg -
|
||||
* @file: (struct file)
|
||||
* @cmd: ioctl opcode
|
||||
* @arg: ?
|
||||
*/
|
||||
static long
|
||||
_ctl_mpt2_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
@@ -2500,9 +2501,9 @@ _ctl_mpt2_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
#ifdef CONFIG_COMPAT
|
||||
/**
|
||||
*_ ctl_ioctl_compat - main ioctl entry point (compat)
|
||||
* @file -
|
||||
* @cmd -
|
||||
* @arg -
|
||||
* @file: ?
|
||||
* @cmd: ?
|
||||
* @arg: ?
|
||||
*
|
||||
* This routine handles 32 bit applications in 64bit os.
|
||||
*/
|
||||
@@ -2518,9 +2519,9 @@ _ctl_ioctl_compat(struct file *file, unsigned cmd, unsigned long arg)
|
||||
|
||||
/**
|
||||
*_ ctl_mpt2_ioctl_compat - main ioctl entry point (compat)
|
||||
* @file -
|
||||
* @cmd -
|
||||
* @arg -
|
||||
* @file: ?
|
||||
* @cmd: ?
|
||||
* @arg: ?
|
||||
*
|
||||
* This routine handles 32 bit applications in 64bit os.
|
||||
*/
|
||||
@@ -2537,8 +2538,9 @@ _ctl_mpt2_ioctl_compat(struct file *file, unsigned cmd, unsigned long arg)
|
||||
/* scsi host attributes */
|
||||
/**
|
||||
* _ctl_version_fw_show - firmware version
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2559,8 +2561,9 @@ static DEVICE_ATTR(version_fw, S_IRUGO, _ctl_version_fw_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_version_bios_show - bios version
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2583,8 +2586,9 @@ static DEVICE_ATTR(version_bios, S_IRUGO, _ctl_version_bios_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_version_mpi_show - MPI (message passing interface) version
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2602,8 +2606,9 @@ static DEVICE_ATTR(version_mpi, S_IRUGO, _ctl_version_mpi_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_version_product_show - product name
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2620,8 +2625,9 @@ static DEVICE_ATTR(version_product, S_IRUGO, _ctl_version_product_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_version_nvdata_persistent_show - ndvata persistent version
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2640,8 +2646,9 @@ static DEVICE_ATTR(version_nvdata_persistent, S_IRUGO,
|
||||
|
||||
/**
|
||||
* _ctl_version_nvdata_default_show - nvdata default version
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2660,8 +2667,9 @@ static DEVICE_ATTR(version_nvdata_default, S_IRUGO,
|
||||
|
||||
/**
|
||||
* _ctl_board_name_show - board name
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2678,8 +2686,9 @@ static DEVICE_ATTR(board_name, S_IRUGO, _ctl_board_name_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_board_assembly_show - board assembly name
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2696,8 +2705,9 @@ static DEVICE_ATTR(board_assembly, S_IRUGO, _ctl_board_assembly_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_board_tracer_show - board tracer number
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -2714,8 +2724,9 @@ static DEVICE_ATTR(board_tracer, S_IRUGO, _ctl_board_tracer_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_io_delay_show - io missing delay
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is for firmware implemention for deboucing device
|
||||
* removal events.
|
||||
@@ -2735,8 +2746,9 @@ static DEVICE_ATTR(io_delay, S_IRUGO, _ctl_io_delay_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_device_delay_show - device missing delay
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is for firmware implemention for deboucing device
|
||||
* removal events.
|
||||
@@ -2756,8 +2768,9 @@ static DEVICE_ATTR(device_delay, S_IRUGO, _ctl_device_delay_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_fw_queue_depth_show - global credits
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is firmware queue depth limit
|
||||
*
|
||||
@@ -2776,8 +2789,9 @@ static DEVICE_ATTR(fw_queue_depth, S_IRUGO, _ctl_fw_queue_depth_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_sas_address_show - sas address
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is the controller sas address
|
||||
*
|
||||
@@ -2799,8 +2813,9 @@ static DEVICE_ATTR(host_sas_address, S_IRUGO,
|
||||
|
||||
/**
|
||||
* _ctl_logging_level_show - logging level
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -2834,8 +2849,9 @@ static DEVICE_ATTR(logging_level, S_IRUGO | S_IWUSR, _ctl_logging_level_show,
|
||||
|
||||
/**
|
||||
* _ctl_fwfault_debug_show - show/store fwfault_debug
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* mpt3sas_fwfault_debug is command line option
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
@@ -2870,8 +2886,9 @@ static DEVICE_ATTR(fwfault_debug, S_IRUGO | S_IWUSR,
|
||||
|
||||
/**
|
||||
* _ctl_ioc_reset_count_show - ioc reset count
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is firmware queue depth limit
|
||||
*
|
||||
@@ -2890,8 +2907,9 @@ static DEVICE_ATTR(ioc_reset_count, S_IRUGO, _ctl_ioc_reset_count_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_ioc_reply_queue_count_show - number of reply queues
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is number of reply queues
|
||||
*
|
||||
@@ -2918,8 +2936,9 @@ static DEVICE_ATTR(reply_queue_count, S_IRUGO, _ctl_ioc_reply_queue_count_show,
|
||||
|
||||
/**
|
||||
* _ctl_BRM_status_show - Backup Rail Monitor Status
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is number of reply queues
|
||||
*
|
||||
@@ -3004,8 +3023,9 @@ struct DIAG_BUFFER_START {
|
||||
|
||||
/**
|
||||
* _ctl_host_trace_buffer_size_show - host buffer size (trace only)
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read-only' shost attribute.
|
||||
*/
|
||||
@@ -3049,8 +3069,9 @@ static DEVICE_ATTR(host_trace_buffer_size, S_IRUGO,
|
||||
|
||||
/**
|
||||
* _ctl_host_trace_buffer_show - firmware ring buffer (trace only)
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*
|
||||
@@ -3114,8 +3135,9 @@ static DEVICE_ATTR(host_trace_buffer, S_IRUGO | S_IWUSR,
|
||||
|
||||
/**
|
||||
* _ctl_host_trace_buffer_enable_show - firmware ring buffer (trace only)
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*
|
||||
@@ -3200,8 +3222,9 @@ static DEVICE_ATTR(host_trace_buffer_enable, S_IRUGO | S_IWUSR,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_master_show - show the diag_trigger_master attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3224,8 +3247,10 @@ _ctl_diag_trigger_master_show(struct device *cdev,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_master_store - store the diag_trigger_master attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
* @count: ?
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3255,8 +3280,9 @@ static DEVICE_ATTR(diag_trigger_master, S_IRUGO | S_IWUSR,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_event_show - show the diag_trigger_event attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3278,8 +3304,10 @@ _ctl_diag_trigger_event_show(struct device *cdev,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_event_store - store the diag_trigger_event attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
* @count: ?
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3309,8 +3337,9 @@ static DEVICE_ATTR(diag_trigger_event, S_IRUGO | S_IWUSR,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_scsi_show - show the diag_trigger_scsi attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3332,8 +3361,10 @@ _ctl_diag_trigger_scsi_show(struct device *cdev,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_scsi_store - store the diag_trigger_scsi attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
* @count: ?
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3362,8 +3393,9 @@ static DEVICE_ATTR(diag_trigger_scsi, S_IRUGO | S_IWUSR,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_scsi_show - show the diag_trigger_mpi attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3385,8 +3417,10 @@ _ctl_diag_trigger_mpi_show(struct device *cdev,
|
||||
|
||||
/**
|
||||
* _ctl_diag_trigger_mpi_store - store the diag_trigger_mpi attribute
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @cdev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
* @count: ?
|
||||
*
|
||||
* A sysfs 'read/write' shost attribute.
|
||||
*/
|
||||
@@ -3450,8 +3484,9 @@ struct device_attribute *mpt3sas_host_attrs[] = {
|
||||
|
||||
/**
|
||||
* _ctl_device_sas_address_show - sas address
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @dev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is the sas address for the target
|
||||
*
|
||||
@@ -3471,8 +3506,9 @@ static DEVICE_ATTR(sas_address, S_IRUGO, _ctl_device_sas_address_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_device_handle_show - device handle
|
||||
* @cdev - pointer to embedded class device
|
||||
* @buf - the buffer returned
|
||||
* @dev: pointer to embedded class device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* This is the firmware assigned device handle
|
||||
*
|
||||
@@ -3492,8 +3528,9 @@ static DEVICE_ATTR(sas_device_handle, S_IRUGO, _ctl_device_handle_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_device_ncq_io_prio_show - send prioritized io commands to device
|
||||
* @dev - pointer to embedded device
|
||||
* @buf - the buffer returned
|
||||
* @dev: pointer to embedded device
|
||||
* @attr: ?
|
||||
* @buf: the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' sdev attribute, only works with SATA
|
||||
*/
|
||||
@@ -3573,7 +3610,7 @@ static struct miscdevice gen2_ctl_dev = {
|
||||
|
||||
/**
|
||||
* mpt3sas_ctl_init - main entry point for ctl.
|
||||
*
|
||||
* @hbas_to_enumerate: ?
|
||||
*/
|
||||
void
|
||||
mpt3sas_ctl_init(ushort hbas_to_enumerate)
|
||||
@@ -3601,7 +3638,7 @@ mpt3sas_ctl_init(ushort hbas_to_enumerate)
|
||||
|
||||
/**
|
||||
* mpt3sas_ctl_exit - exit point for ctl
|
||||
*
|
||||
* @hbas_to_enumerate: ?
|
||||
*/
|
||||
void
|
||||
mpt3sas_ctl_exit(ushort hbas_to_enumerate)
|
||||
|
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Ielādēt izmaiņas
@@ -134,7 +134,7 @@ _transport_convert_phy_link_rate(u8 link_rate)
|
||||
*
|
||||
* Populates sas identify info.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_transport_set_identify(struct MPT3SAS_ADAPTER *ioc, u16 handle,
|
||||
@@ -226,8 +226,8 @@ _transport_set_identify(struct MPT3SAS_ADAPTER *ioc, u16 handle,
|
||||
* Callback handler when sending internal generated transport cmds.
|
||||
* The callback index passed is `ioc->transport_cb_idx`
|
||||
*
|
||||
* Return 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
* Return: 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
*/
|
||||
u8
|
||||
mpt3sas_transport_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
@@ -287,7 +287,7 @@ struct rep_manu_reply {
|
||||
*
|
||||
* Fills in the sas_expander_device object when SMP port is created.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -460,8 +460,6 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
|
||||
* _transport_delete_port - helper function to removing a port
|
||||
* @ioc: per adapter object
|
||||
* @mpt3sas_port: mpt3sas per port object
|
||||
*
|
||||
* Returns nothing.
|
||||
*/
|
||||
static void
|
||||
_transport_delete_port(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -489,8 +487,6 @@ _transport_delete_port(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @ioc: per adapter object
|
||||
* @mpt3sas_port: mpt3sas per port object
|
||||
* @mpt3sas_phy: mpt3sas per phy object
|
||||
*
|
||||
* Returns nothing.
|
||||
*/
|
||||
static void
|
||||
_transport_delete_phy(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -513,8 +509,6 @@ _transport_delete_phy(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @ioc: per adapter object
|
||||
* @mpt3sas_port: mpt3sas per port object
|
||||
* @mpt3sas_phy: mpt3sas per phy object
|
||||
*
|
||||
* Returns nothing.
|
||||
*/
|
||||
static void
|
||||
_transport_add_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_port *mpt3sas_port,
|
||||
@@ -538,8 +532,6 @@ _transport_add_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_port *mpt3sas_port,
|
||||
* @sas_node: sas node object (either expander or sas host)
|
||||
* @mpt3sas_phy: mpt3sas per phy object
|
||||
* @sas_address: sas address of device/expander were phy needs to be added to
|
||||
*
|
||||
* Returns nothing.
|
||||
*/
|
||||
static void
|
||||
_transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -563,7 +555,7 @@ _transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc,
|
||||
return;
|
||||
}
|
||||
_transport_add_phy(ioc, mpt3sas_port, mpt3sas_phy);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -573,8 +565,6 @@ _transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @ioc: per adapter object
|
||||
* @sas_node: sas node object (either expander or sas host)
|
||||
* @mpt3sas_phy: mpt3sas per phy object
|
||||
*
|
||||
* Returns nothing.
|
||||
*/
|
||||
static void
|
||||
_transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -635,7 +625,7 @@ _transport_sanity_check(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node,
|
||||
*
|
||||
* Adding new port object to the sas_node->sas_port_list.
|
||||
*
|
||||
* Returns mpt3sas_port.
|
||||
* Return: mpt3sas_port.
|
||||
*/
|
||||
struct _sas_port *
|
||||
mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
|
||||
@@ -794,8 +784,6 @@ mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
|
||||
*
|
||||
* Removing object and freeing associated memory from the
|
||||
* ioc->sas_port_list.
|
||||
*
|
||||
* Return nothing.
|
||||
*/
|
||||
void
|
||||
mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address,
|
||||
@@ -860,7 +848,7 @@ mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address,
|
||||
* @phy_pg0: sas phy page 0
|
||||
* @parent_dev: parent device class object
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
|
||||
@@ -928,7 +916,7 @@ mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
|
||||
* @expander_pg1: expander page 1
|
||||
* @parent_dev: parent device class object
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
int
|
||||
mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
|
||||
@@ -995,10 +983,8 @@ mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
|
||||
* @ioc: per adapter object
|
||||
* @sas_address: sas address of parent expander or sas host
|
||||
* @handle: attached device handle
|
||||
* @phy_numberv: phy number
|
||||
* @phy_number: phy number
|
||||
* @link_rate: new link rate
|
||||
*
|
||||
* Returns nothing.
|
||||
*/
|
||||
void
|
||||
mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -1090,7 +1076,7 @@ struct phy_error_log_reply {
|
||||
* @ioc: per adapter object
|
||||
* @phy: The sas phy object
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*
|
||||
*/
|
||||
static int
|
||||
@@ -1262,7 +1248,7 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
|
||||
* _transport_get_linkerrors - return phy counters for both hba and expanders
|
||||
* @phy: The sas phy object
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*
|
||||
*/
|
||||
static int
|
||||
@@ -1311,10 +1297,11 @@ _transport_get_linkerrors(struct sas_phy *phy)
|
||||
|
||||
/**
|
||||
* _transport_get_enclosure_identifier -
|
||||
* @phy: The sas phy object
|
||||
* @rphy: The sas phy object
|
||||
* @identifier: ?
|
||||
*
|
||||
* Obtain the enclosure logical id for an expander.
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier)
|
||||
@@ -1342,9 +1329,9 @@ _transport_get_enclosure_identifier(struct sas_rphy *rphy, u64 *identifier)
|
||||
|
||||
/**
|
||||
* _transport_get_bay_identifier -
|
||||
* @phy: The sas phy object
|
||||
* @rphy: The sas phy object
|
||||
*
|
||||
* Returns the slot id for a device that resides inside an enclosure.
|
||||
* Return: the slot id for a device that resides inside an enclosure.
|
||||
*/
|
||||
static int
|
||||
_transport_get_bay_identifier(struct sas_rphy *rphy)
|
||||
@@ -1400,8 +1387,9 @@ struct phy_control_reply {
|
||||
* _transport_expander_phy_control - expander phy control
|
||||
* @ioc: per adapter object
|
||||
* @phy: The sas phy object
|
||||
* @phy_operation: ?
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*
|
||||
*/
|
||||
static int
|
||||
@@ -1571,7 +1559,7 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
|
||||
* @phy: The sas phy object
|
||||
* @hard_reset:
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_transport_phy_reset(struct sas_phy *phy, int hard_reset)
|
||||
@@ -1623,7 +1611,7 @@ _transport_phy_reset(struct sas_phy *phy, int hard_reset)
|
||||
* @enable: enable phy when true
|
||||
*
|
||||
* Only support sas_host direct attached phys.
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_transport_phy_enable(struct sas_phy *phy, int enable)
|
||||
@@ -1761,7 +1749,8 @@ _transport_phy_enable(struct sas_phy *phy, int enable)
|
||||
* @rates: rates defined in sas_phy_linkrates
|
||||
*
|
||||
* Only support sas_host direct attached phys.
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
*
|
||||
* Return: 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int
|
||||
_transport_phy_speed(struct sas_phy *phy, struct sas_phy_linkrates *rates)
|
||||
@@ -1904,9 +1893,9 @@ _transport_unmap_smp_buffer(struct device *dev, struct bsg_buffer *buf,
|
||||
|
||||
/**
|
||||
* _transport_smp_handler - transport portal for smp passthru
|
||||
* @job: ?
|
||||
* @shost: shost object
|
||||
* @rphy: sas transport rphy object
|
||||
* @req:
|
||||
*
|
||||
* This used primarily for smp_utils.
|
||||
* Example:
|
||||
@@ -1936,12 +1925,12 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
|
||||
pr_info(MPT3SAS_FMT "%s: host reset in progress!\n",
|
||||
__func__, ioc->name);
|
||||
rc = -EFAULT;
|
||||
goto out;
|
||||
goto job_done;
|
||||
}
|
||||
|
||||
rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex);
|
||||
if (rc)
|
||||
goto out;
|
||||
goto job_done;
|
||||
|
||||
if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
|
||||
pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc->name,
|
||||
@@ -2066,6 +2055,7 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
|
||||
out:
|
||||
ioc->transport_cmds.status = MPT3_CMD_NOT_USED;
|
||||
mutex_unlock(&ioc->transport_cmds.mutex);
|
||||
job_done:
|
||||
bsg_job_done(job, rc, reslen);
|
||||
}
|
||||
|
||||
|
@@ -62,7 +62,7 @@
|
||||
/**
|
||||
* _mpt3sas_raise_sigio - notifiy app
|
||||
* @ioc: per adapter object
|
||||
* @event_data:
|
||||
* @event_data: ?
|
||||
*/
|
||||
static void
|
||||
_mpt3sas_raise_sigio(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -107,7 +107,7 @@ _mpt3sas_raise_sigio(struct MPT3SAS_ADAPTER *ioc,
|
||||
/**
|
||||
* mpt3sas_process_trigger_data - process the event data for the trigger
|
||||
* @ioc: per adapter object
|
||||
* @event_data:
|
||||
* @event_data: ?
|
||||
*/
|
||||
void
|
||||
mpt3sas_process_trigger_data(struct MPT3SAS_ADAPTER *ioc,
|
||||
@@ -209,8 +209,8 @@ mpt3sas_trigger_master(struct MPT3SAS_ADAPTER *ioc, u32 trigger_bitmask)
|
||||
/**
|
||||
* mpt3sas_trigger_event - Event trigger handler
|
||||
* @ioc: per adapter object
|
||||
* @event:
|
||||
* @log_entry_qualifier:
|
||||
* @event: ?
|
||||
* @log_entry_qualifier: ?
|
||||
*
|
||||
*/
|
||||
void
|
||||
@@ -288,9 +288,9 @@ mpt3sas_trigger_event(struct MPT3SAS_ADAPTER *ioc, u16 event,
|
||||
/**
|
||||
* mpt3sas_trigger_scsi - SCSI trigger handler
|
||||
* @ioc: per adapter object
|
||||
* @sense_key:
|
||||
* @asc:
|
||||
* @ascq:
|
||||
* @sense_key: ?
|
||||
* @asc: ?
|
||||
* @ascq: ?
|
||||
*
|
||||
*/
|
||||
void
|
||||
@@ -364,8 +364,8 @@ mpt3sas_trigger_scsi(struct MPT3SAS_ADAPTER *ioc, u8 sense_key, u8 asc,
|
||||
/**
|
||||
* mpt3sas_trigger_mpi - MPI trigger handler
|
||||
* @ioc: per adapter object
|
||||
* @ioc_status:
|
||||
* @loginfo:
|
||||
* @ioc_status: ?
|
||||
* @loginfo: ?
|
||||
*
|
||||
*/
|
||||
void
|
||||
|
@@ -267,9 +267,6 @@ out_error:
|
||||
* @scmd: pointer to scsi command object
|
||||
* @raid_device: pointer to raid device data structure
|
||||
* @mpi_request: pointer to the SCSI_IO reqest message frame
|
||||
* @smid: system request message index
|
||||
*
|
||||
* Returns nothing
|
||||
*/
|
||||
void
|
||||
mpt3sas_setup_direct_io(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user