Re: Need help with another aic94xx sequencer problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2006-08-24 at 09:22 -0500, James Bottomley wrote:
> On Thu, 2006-08-24 at 01:58 -0700, Luben Tuikov wrote:
> > The sequencer response is correct but incomplete.  The interpretation
> > is a bad compromize between SSP and STP.
> > 
> > TF_TMF_NO_CTX should be interpreted as TMF_RESP_FUNC_ESUPP to get
> > "best of both worlds", and then upper layers would do the proper
> > thing depending on the protocol.
> 
> OK ... I can do that easily; that should cause the error handler to try
> with a bigger hammer.

So, let's try this as the first order fix.

James

Index: BUILD-2.6/drivers/scsi/aic94xx/aic94xx_tmf.c
===================================================================
--- BUILD-2.6.orig/drivers/scsi/aic94xx/aic94xx_tmf.c	2006-08-26 09:35:05.000000000 -0500
+++ BUILD-2.6/drivers/scsi/aic94xx/aic94xx_tmf.c	2006-08-26 09:37:54.000000000 -0500
@@ -462,13 +462,15 @@ int asd_abort_task(struct sas_task *task
 		if (task->task_state_flags & SAS_TASK_STATE_DONE)
 			res = TMF_RESP_FUNC_COMPLETE;
 		spin_unlock_irqrestore(&task->task_state_lock, flags);
-		goto out_done; break;
+		goto out_done;
 	case TF_TMF_NO_TAG + 0xFF00:
 	case TF_TMF_TAG_FREE + 0xFF00: /* the tag is in the free list */
-	case TF_TMF_NO_CTX + 0xFF00: /* not in seq, or proto != SSP */
 	case TF_TMF_NO_CONN_HANDLE + 0xFF00: /* no such device */
 		res = TMF_RESP_FUNC_COMPLETE;
-		goto out_done; break;
+		goto out_done;
+	case TF_TMF_NO_CTX + 0xFF00: /* not in seq, or proto != SSP */
+		res = TMF_RESP_FUNC_ESUPP;
+		goto out;
 	}
 out_done:
 	if (res == TMF_RESP_FUNC_COMPLETE) {
@@ -558,10 +560,12 @@ static int asd_initiate_ssp_tmf(struct d
 		break;
 	case TF_TMF_NO_TAG + 0xFF00:
 	case TF_TMF_TAG_FREE + 0xFF00: /* the tag is in the free list */
-	case TF_TMF_NO_CTX + 0xFF00: /* not in seq, or proto != SSP */
 	case TF_TMF_NO_CONN_HANDLE + 0xFF00: /* no such device */
 		res = TMF_RESP_FUNC_COMPLETE;
 		break;
+	case TF_TMF_NO_CTX + 0xFF00: /* not in seq, or proto != SSP */
+		res = TMF_RESP_FUNC_ESUPP;
+		break;
 	default:
 		ASD_DPRINTK("%s: converting result 0x%x to TMF_RESP_FUNC_FAILED\n",
 			    __FUNCTION__, res);


-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux