scsi: qla2xxx: Save frame payload size from ICB
authorQuinn Tran <quinn.tran@cavium.com>
Thu, 2 Aug 2018 20:16:56 +0000 (13:16 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 2 Aug 2018 20:56:18 +0000 (16:56 -0400)
Save frame payload size from init control block.  This field/data is used
to register with switch database.  This allows the init control block temp
buf to be reused.

[mkp: remove unused variable]

Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_gs.c
drivers/scsi/qla2xxx/qla_init.c

index 0fc5635..d1ff1b8 100644 (file)
@@ -3848,6 +3848,7 @@ struct qla_hw_data {
        atomic_t        num_pend_mbx_stage1;
        atomic_t        num_pend_mbx_stage2;
        atomic_t        num_pend_mbx_stage3;
+       uint16_t        frame_payload_size;
 
        uint32_t        login_retry_count;
        /* SNS command interfaces. */
index 5139a35..cf70c59 100644 (file)
@@ -1954,7 +1954,6 @@ qla2x00_fdmiv2_rhba(scsi_qla_host_t *vha)
        void *entries;
        struct ct_fdmiv2_hba_attr *eiter;
        struct qla_hw_data *ha = vha->hw;
-       struct init_cb_24xx *icb24 = (struct init_cb_24xx *)ha->init_cb;
        struct new_utsname *p_sysid = NULL;
 
        /* Issue RHBA */
@@ -2134,9 +2133,7 @@ qla2x00_fdmiv2_rhba(scsi_qla_host_t *vha)
        /* MAX CT Payload Length */
        eiter = entries + size;
        eiter->type = cpu_to_be16(FDMI_HBA_MAXIMUM_CT_PAYLOAD_LENGTH);
-       eiter->a.max_ct_len = IS_FWI2_CAPABLE(ha) ?
-           le16_to_cpu(icb24->frame_payload_size) :
-           le16_to_cpu(ha->init_cb->frame_payload_size);
+       eiter->a.max_ct_len = cpu_to_be32(ha->frame_payload_size);
        eiter->a.max_ct_len = cpu_to_be32(eiter->a.max_ct_len);
        eiter->len = cpu_to_be16(4 + 4);
        size += 4 + 4;
index c3c7aa1..471322c 100644 (file)
@@ -4418,7 +4418,7 @@ qla2x00_nvram_config(scsi_qla_host_t *vha)
        cnt = (uint8_t *)icb->reserved_3 - (uint8_t *)icb->add_firmware_options;
        while (cnt--)
                *dptr1++ = *dptr2++;
-
+       ha->frame_payload_size = le16_to_cpu(icb->frame_payload_size);
        /* Use alternate WWN? */
        if (nv->host_p[1] & BIT_7) {
                memcpy(icb->node_name, nv->alternate_node_name, WWN_SIZE);
@@ -6893,7 +6893,7 @@ qla24xx_nvram_config(scsi_qla_host_t *vha)
            (uint8_t *)&icb->interrupt_delay_timer;
        while (cnt--)
                *dptr1++ = *dptr2++;
-
+       ha->frame_payload_size = le16_to_cpu(icb->frame_payload_size);
        /*
         * Setup driver NVRAM options.
         */
@@ -7949,7 +7949,7 @@ qla81xx_nvram_config(scsi_qla_host_t *vha)
 
        /* Use extended-initialization control block. */
        memcpy(ha->ex_init_cb, &nv->ex_version, sizeof(*ha->ex_init_cb));
-
+       ha->frame_payload_size = le16_to_cpu(icb->frame_payload_size);
        /*
         * Setup driver NVRAM options.
         */