I have tested a fix for this issue and the LP9002 is working again on my 
system.  We will be submitting an updated driver to Sun in a future gate, but I 
am not sure yet which one it will make it into.    Until then, I am posting the 
fix below for any of you who are compiling the source yourself.  You can make 
the change and give it a try.  We may be able to compile and distribute a test 
build of the driver for those that really need it, but officially you should 
not redistribute it beyond your test facilities.  Just email me directly if 
that is desirable (allen.andr...@emulex.com).

Here is the fix:

emlxs_sli3.c:
static uint32_t
emlxs_sli3_prep_fct_iocb(emlxs_port_t *port, emlxs_buf_t *cmd_sbp,
    int channel)
{
 …
        if (fct_task->task_flags & TF_WRITE_DATA) {
                iocb->ULPCOMMAND = CMD_FCP_TRECEIVE64_CX;
        } else {        /* TF_READ_DATA */

                iocb->ULPCOMMAND = CMD_FCP_TSEND64_CX;

-                        if (dbuf->db_data_size ==
-                            fct_task->task_expected_xfer_length)
+                        if ((hba->sli_mode == EMLXS_HBA_SLI3_MODE) &&
+                            (dbuf->db_data_size ==
+                            fct_task->task_expected_xfer_length))
                                iocb->ULPCT = 0x1;
                                /* enable auto-rsp AP feature */
        }

        return (IOERR_SUCCESS);

} /* emlxs_sli3_prep_fct_iocb() */

The change for SLI2 is made in the SLI3 routine because the SLI2 interface is 
very very similar to SLI3 and we didn't want to replicate all the code between 
SLI2 and SLI3.  Therefore, the SLI3 functions handle both SLI2 and SLI3 
behavior.
-- 
This message posted from opensolaris.org
_______________________________________________
storage-discuss mailing list
storage-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/storage-discuss

Reply via email to