diff mbox

[04/19] qla2xxx: Set FLOGI retry in additional firmware options for P2P (N2N) mode.

Message ID 1467818075-15246-5-git-send-email-himanshu.madhani@qlogic.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Himanshu Madhani July 6, 2016, 3:14 p.m. UTC
From: Giridhar Malavali <giridhar.malavali@qlogic.com>

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>
---
 drivers/scsi/qla2xxx/qla_dbg.c  |  2 +-
 drivers/scsi/qla2xxx/qla_init.c | 24 ++++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

Comments

Hannes Reinecke July 15, 2016, 12:51 p.m. UTC | #1
On 07/06/2016 05:14 PM, Himanshu Madhani wrote:
> From: Giridhar Malavali <giridhar.malavali@qlogic.com>
> 
> 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>
> ---
>  drivers/scsi/qla2xxx/qla_dbg.c  |  2 +-
>  drivers/scsi/qla2xxx/qla_init.c | 24 ++++++++++++++++++++++++
>  2 files changed, 25 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
> index 0671f07..907a7ac 100644
> --- a/drivers/scsi/qla2xxx/qla_dbg.c
> +++ b/drivers/scsi/qla2xxx/qla_dbg.c
> @@ -16,7 +16,7 @@
>   * |                              |                    | 0x016e-0x0170  |
>   * | Mailbox commands             |       0x1192       |		|
>   * |                              |                    |		|
> - * | Device Discovery             |       0x2016       | 0x2020-0x2022, |
> + * | Device Discovery             |       0x2003       | 0x2016		|
>   * |                              |                    | 0x2011-0x2012, |
>   * |                              |                    | 0x2099-0x20a4  |
>   * | Queue Command and IO tracing |       0x3074       | 0x300b         |
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index c56cdb3..a3685b6 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -2053,6 +2053,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);
>  }
> @@ -2070,6 +2078,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;
> @@ -6513,6 +6529,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;
>  
> 
Is this bit available for all firmware versions?
Or does one need a newer firmware here?

Cheers,

Hannes
diff mbox

Patch

diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
index 0671f07..907a7ac 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.c
+++ b/drivers/scsi/qla2xxx/qla_dbg.c
@@ -16,7 +16,7 @@ 
  * |                              |                    | 0x016e-0x0170  |
  * | Mailbox commands             |       0x1192       |		|
  * |                              |                    |		|
- * | Device Discovery             |       0x2016       | 0x2020-0x2022, |
+ * | Device Discovery             |       0x2003       | 0x2016		|
  * |                              |                    | 0x2011-0x2012, |
  * |                              |                    | 0x2099-0x20a4  |
  * | Queue Command and IO tracing |       0x3074       | 0x300b         |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index c56cdb3..a3685b6 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -2053,6 +2053,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);
 }
@@ -2070,6 +2078,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;
@@ -6513,6 +6529,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;