]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/message/fusion/mptscsih.c
[SCSI] mptsas : Handle INSUFFICIENT resources status as similar to IOC BUSY status
[karo-tx-linux.git] / drivers / message / fusion / mptscsih.c
index 96681203d4a960475f53501f994e740f6792c8e4..1466a5aed5f87f5c6472ed5f95c9edcfe164ed2e 100644 (file)
@@ -689,6 +689,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
 
                switch(status) {
                case MPI_IOCSTATUS_BUSY:                        /* 0x0002 */
+               case MPI_IOCSTATUS_INSUFFICIENT_RESOURCES:      /* 0x0006 */
                        /* CHECKME!
                         * Maybe: DRIVER_BUSY | SUGGEST_RETRY | DID_SOFT_ERROR (retry)
                         * But not: DID_BUS_BUSY lest one risk
@@ -872,7 +873,6 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
                case MPI_IOCSTATUS_INVALID_SGL:                 /* 0x0003 */
                case MPI_IOCSTATUS_INTERNAL_ERROR:              /* 0x0004 */
                case MPI_IOCSTATUS_RESERVED:                    /* 0x0005 */
-               case MPI_IOCSTATUS_INSUFFICIENT_RESOURCES:      /* 0x0006 */
                case MPI_IOCSTATUS_INVALID_FIELD:               /* 0x0007 */
                case MPI_IOCSTATUS_INVALID_STATE:               /* 0x0008 */
                case MPI_IOCSTATUS_SCSI_IO_DATA_ERROR:          /* 0x0046 */
@@ -1729,9 +1729,6 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
         */
        mf = MPT_INDEX_2_MFPTR(ioc, scpnt_idx);
        ctx2abort = mf->u.frame.hwhdr.msgctxu.MsgContext;
-
-       hd->abortSCpnt = SCpnt;
-
        retval = mptscsih_IssueTaskMgmt(hd,
                         MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK,
                         vdevice->vtarget->channel,
@@ -2442,10 +2439,7 @@ mptscsih_get_scsi_lookup(MPT_ADAPTER *ioc, int i)
 EXPORT_SYMBOL(mptscsih_get_scsi_lookup);
 
 /**
- * mptscsih_getclear_scsi_lookup
- *
- * retrieves and clears scmd entry from ScsiLookup[] array list
- *
+ * mptscsih_getclear_scsi_lookup -  retrieves and clears scmd entry from ScsiLookup[] array list
  * @ioc: Pointer to MPT_ADAPTER structure
  * @i: index into the array
  *
@@ -2630,56 +2624,12 @@ mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *req,
        return 1;
 }
 
-/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
-/*     mptscsih_timer_expired - Call back for timer process.
- *     Used only for dv functionality.
- *     @data: Pointer to MPT_SCSI_HOST recast as an unsigned long
- *
- */
-void
-mptscsih_timer_expired(unsigned long data)
-{
-       MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *) data;
-       MPT_ADAPTER     *ioc = hd->ioc;
-
-       ddvprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Timer Expired! Cmd %p\n", ioc->name, hd->cmdPtr));
-
-       if (hd->cmdPtr) {
-               MPIHeader_t *cmd = (MPIHeader_t *)hd->cmdPtr;
-
-               if (cmd->Function == MPI_FUNCTION_SCSI_IO_REQUEST) {
-                       /* Desire to issue a task management request here.
-                        * TM requests MUST be single threaded.
-                        * If old eh code and no TM current, issue request.
-                        * If new eh code, do nothing. Wait for OS cmd timeout
-                        *      for bus reset.
-                        */
-               } else {
-                       /* Perform a FW reload */
-                       if (mpt_HardResetHandler(ioc, NO_SLEEP) < 0) {
-                               printk(MYIOC_s_WARN_FMT "Firmware Reload FAILED!\n", ioc->name);
-                       }
-               }
-       } else {
-               /* This should NEVER happen */
-               printk(MYIOC_s_WARN_FMT "Null cmdPtr!!!!\n", ioc->name);
-       }
-
-       /* No more processing.
-        * TM call will generate an interrupt for SCSI TM Management.
-        * The FW will reply to all outstanding commands, callback will finish cleanup.
-        * Hard reset clean-up will free all resources.
-        */
-       ddvprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Timer Expired Complete!\n", ioc->name));
-
-       return;
-}
 
 /**
  *     mptscsih_get_completion_code -
  *     @ioc: Pointer to MPT_ADAPTER structure
- *     @reply:
- *     @cmd:
+ *     @req: Pointer to original MPT request frame
+ *     @reply: Pointer to MPT reply frame (NULL if TurboReply)
  *
  **/
 static int
@@ -3268,6 +3218,5 @@ EXPORT_SYMBOL(mptscsih_scandv_complete);
 EXPORT_SYMBOL(mptscsih_event_process);
 EXPORT_SYMBOL(mptscsih_ioc_reset);
 EXPORT_SYMBOL(mptscsih_change_queue_depth);
-EXPORT_SYMBOL(mptscsih_timer_expired);
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/