u32 handle;
        unsigned long flags;
 
+       if (sp->cmd_sp)
+               ql_dbg(ql_dbg_async, sp->vha, 0x507c,
+                   "Abort timeout - cmd hdl=%x, cmd type=%x hdl=%x, type=%x\n",
+                   sp->cmd_sp->handle, sp->cmd_sp->type,
+                   sp->handle, sp->type);
+       else
+               ql_dbg(ql_dbg_async, sp->vha, 0x507c,
+                   "Abort timeout 2 - hdl=%x, type=%x\n",
+                   sp->handle, sp->type);
+
        spin_lock_irqsave(qpair->qp_lock_ptr, flags);
        for (handle = 1; handle < qpair->req->num_outstanding_cmds; handle++) {
+               if (sp->cmd_sp && (qpair->req->outstanding_cmds[handle] ==
+                   sp->cmd_sp))
+                       qpair->req->outstanding_cmds[handle] = NULL;
+
                /* removing the abort */
                if (qpair->req->outstanding_cmds[handle] == sp) {
                        qpair->req->outstanding_cmds[handle] = NULL;
        }
        spin_unlock_irqrestore(qpair->qp_lock_ptr, flags);
 
+       if (sp->cmd_sp)
+               sp->cmd_sp->done(sp->cmd_sp, QLA_OS_TIMER_EXPIRED);
+
        abt->u.abt.comp_status = CS_TIMEOUT;
        sp->done(sp, QLA_OS_TIMER_EXPIRED);
 }
        sp->type = SRB_ABT_CMD;
        sp->name = "abort";
        sp->qpair = cmd_sp->qpair;
+       sp->cmd_sp = cmd_sp;
        if (wait)
                sp->flags = SRB_WAKEUP_ON_COMP;