[SCSI] mpt2sas: Target Reset will be issued from Interrupt context.
(1) Added three new functions to handle sending target resest and OP_REMOVE from interrupt time, they are _scsih_tm_tr_send, _scsih_tm_tr_complete, and _scsih_sas_control_complete. This code will create a link list of pending target resets if there is no more available request in the hipriority request queue. The list is stored in ioc->delayed_tr_list. (2) All callback handler return type is changed from void to u8. Now _base_interrupt will check for return type of callback handlers to take decision of message frame is already freed or not. In genral, Return 1 meaning mf should be freed from _base_interrupt 0 means the mf is freed from function. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
committed by
James Bottomley
parent
595bb0bd62
commit
77e63ed443
@@ -218,9 +218,10 @@ _transport_set_identify(struct MPT2SAS_ADAPTER *ioc, u16 handle,
|
||||
* Callback handler when sending internal generated transport cmds.
|
||||
* The callback index passed is `ioc->transport_cb_idx`
|
||||
*
|
||||
* Return nothing.
|
||||
* Return 1 meaning mf should be freed from _base_interrupt
|
||||
* 0 means the mf is freed from this function.
|
||||
*/
|
||||
void
|
||||
u8
|
||||
mpt2sas_transport_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
u32 reply)
|
||||
{
|
||||
@@ -228,9 +229,9 @@ mpt2sas_transport_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
|
||||
mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply);
|
||||
if (ioc->transport_cmds.status == MPT2_CMD_NOT_USED)
|
||||
return;
|
||||
return 1;
|
||||
if (ioc->transport_cmds.smid != smid)
|
||||
return;
|
||||
return 1;
|
||||
ioc->transport_cmds.status |= MPT2_CMD_COMPLETE;
|
||||
if (mpi_reply) {
|
||||
memcpy(ioc->transport_cmds.reply, mpi_reply,
|
||||
@@ -239,6 +240,7 @@ mpt2sas_transport_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
|
||||
}
|
||||
ioc->transport_cmds.status &= ~MPT2_CMD_PENDING;
|
||||
complete(&ioc->transport_cmds.done);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* report manufacture request structure */
|
||||
|
Reference in New Issue
Block a user