On 2019-12-02 12:55, Roman Bolshakov wrote: > On Mon, Dec 02, 2019 at 08:40:17AM -0800, Bart Van Assche wrote: >> diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c >> index b25f87ff8cde..e2e91b3f2e65 100644 >> --- a/drivers/scsi/qla2xxx/qla_iocb.c >> +++ b/drivers/scsi/qla2xxx/qla_iocb.c >> @@ -2656,10 +2656,16 @@ qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb) >> els_iocb->port_id[0] = sp->fcport->d_id.b.al_pa; >> els_iocb->port_id[1] = sp->fcport->d_id.b.area; >> els_iocb->port_id[2] = sp->fcport->d_id.b.domain; >> - /* For SID the byte order is different than DID */ >> - els_iocb->s_id[1] = vha->d_id.b.al_pa; >> - els_iocb->s_id[2] = vha->d_id.b.area; >> - els_iocb->s_id[0] = vha->d_id.b.domain; >> + if (IS_QLA23XX(vha->hw) || IS_QLA24XX(vha->hw) || IS_QLA25XX(vha->hw)) { >> + els_iocb->s_id[0] = vha->d_id.b.al_pa; >> + els_iocb->s_id[1] = vha->d_id.b.area; >> + els_iocb->s_id[2] = vha->d_id.b.domain; >> + } else { >> + /* For SID the byte order is different than DID */ >> + els_iocb->s_id[1] = vha->d_id.b.al_pa; >> + els_iocb->s_id[2] = vha->d_id.b.area; >> + els_iocb->s_id[0] = vha->d_id.b.domain; >> + } >> >> if (elsio->u.els_logo.els_cmd == ELS_DCMD_PLOGI) { >> els_iocb->control_flags = 0; > > Hi Bart, > > I'm fine as long as it works for old and new HBAs. I don't have docs to > 2300/2400 series and the HBAs. Are you sure it follows the same S_ID > order as 2500? > > Regardless of that, it should work for the last 4 series of the HBAs, > Reviewed-by: Roman Bolshakov <r.bolshakov@xxxxxxxxx> Hi Roman, Thanks for the review. In my copy of the 25xx firmware manual the s_id[] field has been marked as RESERVED. I have tried not to write into s_id[] but that was not sufficient to restore point-to-point mode. Older versions of the qla2xxx driver did not initialize s_id[]. I think that commit edd05de19759 ("scsi: qla2xxx: Changes to support N2N logins") is the commit that introduced initialization of s_id[]. Is that value passed to the target port? Did that commit perhaps introduce code that checks the value received by the target? Bart.