]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
qla2xxx: Set FLOGI retry in additional firmware options for P2P (N2N) mode.
authorGiridhar Malavali <giridhar.malavali@qlogic.com>
Thu, 7 Jul 2016 06:15:53 +0000 (11:45 +0530)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 13 Jul 2016 07:41:31 +0000 (00:41 -0700)
Orabug: 23755773

When VP decoupling enabled, there could be a window where, FLOGI from
initiators can be dropped before VP0 is enabled, causing link level recovery.
Retry FLOGI to avoid link level recovery.

Signed-off-by: Giridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
drivers/scsi/qla2xxx/qla_dbg.c
drivers/scsi/qla2xxx/qla_init.c

index 2969be2cb4869ed00e4f307d7d7c9f5e44e5d1bf..9ae6ee726eed653f8789cdcab0199e27d0b1b0e5 100644 (file)
@@ -16,7 +16,7 @@
  * |                              |                    | 0x016e-0x0170  |
  * | Mailbox commands             |       0x118d       | 0x1115-0x1116 |
  * |                              |                    | 0x111a-0x111b  |
- * | Device Discovery             |       0x2016       | 0x2020-0x2022, |
+ * | Device Discovery             |       0x2103       | 0x2020-0x2022, |
  * |                              |                    | 0x2011-0x2012, |
  * |                              |                    | 0x2099-0x20a4  |
  * | Queue Command and IO tracing |       0x3075       | 0x300b         |
index c15d33d2ea11b07c05b7209da5afbfc3f31d0b4c..ad6d4adfeeed8bc04acf299a91bce72bc8efd48e 100644 (file)
@@ -2036,6 +2036,14 @@ qla2x00_update_fw_options(scsi_qla_host_t *vha)
        if (IS_QLA6312(ha))
                ha->fw_options[2] |= BIT_13;
 
+       /* Set Retry FLOGI in case of P2P connection */
+       if (ha->operating_mode == P2P) {
+               ha->fw_options[2] |= BIT_3;
+               ql_dbg(ql_dbg_disc, vha, 0x2100,
+                   "(%s): Setting FLOGI retry BIT in fw_options[2]: 0x%x\n",
+                       __func__, ha->fw_options[2]);
+       }
+
        /* Update firmware options. */
        qla2x00_set_fw_options(vha, ha->fw_options);
 }
@@ -2053,6 +2061,14 @@ qla24xx_update_fw_options(scsi_qla_host_t *vha)
        if (ql2xfwholdabts)
                ha->fw_options[3] |= BIT_12;
 
+       /* Set Retry FLOGI in case of P2P connection */
+       if (ha->operating_mode == P2P) {
+               ha->fw_options[2] |= BIT_3;
+               ql_dbg(ql_dbg_disc, vha, 0x2101,
+                   "(%s): Setting FLOGI retry BIT in fw_options[2]: 0x%x\n",
+                       __func__, ha->fw_options[2]);
+       }
+
        /* Update Serial Link options. */
        if ((le16_to_cpu(ha->fw_seriallink_options24[0]) & BIT_0) == 0)
                return;
@@ -6473,6 +6489,14 @@ qla81xx_update_fw_options(scsi_qla_host_t *vha)
        if (ql2xfwholdabts)
                ha->fw_options[3] |= BIT_12;
 
+       /* Set Retry FLOGI in case of P2P connection */
+       if (ha->operating_mode == P2P) {
+               ha->fw_options[2] |= BIT_3;
+               ql_dbg(ql_dbg_disc, vha, 0x2103,
+                   "(%s): Setting FLOGI retry BIT in fw_options[2]: 0x%x\n",
+                       __func__, ha->fw_options[2]);
+       }
+
        if (!ql2xetsenable)
                goto out;