]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
lpfc: The lpfc driver does not issue RFF_ID and RFT_ID in the correct sequence
authorJames Smart <james.smart@avagotech.com>
Thu, 21 May 2015 17:55:16 +0000 (13:55 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Mon, 19 Oct 2015 16:10:55 +0000 (09:10 -0700)
The order (it's a shall, but hard to dictate after the fact) is given in
FC-SCM - kind of.  SCM indicates what shall be implemented, lists it as (a),
(b), (c), but actually doesn't say it has to be in that order.  The only hard
requirement, called out in FCP-4, is that you must register your FC-4 Type
(via RFT_ID) before registering FC-4 Type Features (via RFF_ID), which makes
sense. We obviously violated this and there were some switches (or newer fw in
them) that enforced it.  The other rule of thumbs are: register your data with
the switch first, then register for SCRs, then do queries about the fabric,
with the SCRs telling you of changes post the queries.

Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com>
Signed-off-by: James Smart <james.smart@avagotech.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sebastian Herbszt <herbszt@gmx.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
(cherry picked from commit e26422fe91e533cb0a51f5f5bf80856d40592e0d)

Orabug: 22029622
From dick.kennedy@avagotech.com lpfc-10.5.0.1-11.0.0.3-1.tar.gz
Acked-by: Chuck Anderson <chuck.anderson@oracle.com>
drivers/scsi/lpfc/lpfc_hbadisc.c

index 11b60449ce774ba0d105e67fed5ad346fbd4e6cb..5d0a48ce65e14036cac28fbc1f8972cc225e9f7e 100644 (file)
@@ -3871,11 +3871,11 @@ out:
 
        if (vport->port_state < LPFC_VPORT_READY) {
                /* Link up discovery requires Fabric registration. */
-               lpfc_ns_cmd(vport, SLI_CTNS_RFF_ID, 0, 0); /* Do this first! */
                lpfc_ns_cmd(vport, SLI_CTNS_RNN_ID, 0, 0);
                lpfc_ns_cmd(vport, SLI_CTNS_RSNN_NN, 0, 0);
                lpfc_ns_cmd(vport, SLI_CTNS_RSPN_ID, 0, 0);
                lpfc_ns_cmd(vport, SLI_CTNS_RFT_ID, 0, 0);
+               lpfc_ns_cmd(vport, SLI_CTNS_RFF_ID, 0, 0);
 
                /* Issue SCR just before NameServer GID_FT Query */
                lpfc_issue_els_scr(vport, SCR_DID, 0);