Commit b480a32e authored by Krishna Gudipati's avatar Krishna Gudipati Committed by James Bottomley
Browse files

[SCSI] bfa: Fix few attributes in the RHBA CT passthru command



- Made changes to set the RHBA command max payload based on
  the port configured frame size.
- Made changes to fix the driver/fw version size in FMDI structure.
- Fix to pass the fw version for FDMI attribute type
  FDMI_HBA_ATTRIB_FW_VERSION rather than driver version.

Signed-off-by: default avatarKrishna Gudipati <kgudipat@brocade.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent ea5d7c9e
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -642,9 +642,9 @@ struct bfa_fcs_fdmi_hba_attr_s {
	u8         model[16];
	u8         model_desc[256];
	u8         hw_version[8];
	u8         driver_version[8];
	u8         driver_version[BFA_VERSION_LEN];
	u8         option_rom_ver[BFA_VERSION_LEN];
	u8         fw_version[8];
	u8         fw_version[BFA_VERSION_LEN];
	u8         os_name[256];
	__be32        max_ct_pyld;
};
+7 −7
Original line number Diff line number Diff line
@@ -2014,13 +2014,10 @@ bfa_fcs_lport_fdmi_build_rhba_pyld(struct bfa_fcs_lport_fdmi_s *fdmi, u8 *pyld)
					 sizeof(templen));
	}

	/*
	 * f/w Version = driver version
	 */
	attr = (struct fdmi_attr_s *) curr_ptr;
	attr->type = cpu_to_be16(FDMI_HBA_ATTRIB_FW_VERSION);
	templen = (u16) strlen(fcs_hba_attr->driver_version);
	memcpy(attr->value, fcs_hba_attr->driver_version, templen);
	templen = (u16) strlen(fcs_hba_attr->fw_version);
	memcpy(attr->value, fcs_hba_attr->fw_version, templen);
	templen = fc_roundup(templen, sizeof(u32));
	curr_ptr += sizeof(attr->type) + sizeof(templen) + templen;
	len += templen;
@@ -2422,6 +2419,7 @@ bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_lport_fdmi_s *fdmi,
{
	struct bfa_fcs_lport_s *port = fdmi->ms->port;
	struct bfa_fcs_driver_info_s  *driver_info = &port->fcs->driver_info;
	struct bfa_fcs_fdmi_port_attr_s fcs_port_attr;

	memset(hba_attr, 0, sizeof(struct bfa_fcs_fdmi_hba_attr_s));

@@ -2457,7 +2455,9 @@ bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_lport_fdmi_s *fdmi,
				sizeof(driver_info->host_os_patch));
	}

	hba_attr->max_ct_pyld = cpu_to_be32(FC_MAX_PDUSZ);
	/* Retrieve the max frame size from the port attr */
	bfa_fcs_fdmi_get_portattr(fdmi, &fcs_port_attr);
	hba_attr->max_ct_pyld = fcs_port_attr.max_frm_size;
}

static void
@@ -2517,7 +2517,7 @@ bfa_fcs_fdmi_get_portattr(struct bfa_fcs_lport_fdmi_s *fdmi,
	/*
	 * Max PDU Size.
	 */
	port_attr->max_frm_size = cpu_to_be32(FC_MAX_PDUSZ);
	port_attr->max_frm_size = cpu_to_be32(pport_attr.pport_cfg.maxfrsize);

	/*
	 * OS device Name
+2 −1
Original line number Diff line number Diff line
@@ -761,7 +761,8 @@ bfa_status_t bfa_dconf_update(struct bfa_s *bfa);
#define bfa_ioc_maxfrsize(__ioc)	((__ioc)->attr->maxfrsize)
#define bfa_ioc_rx_bbcredit(__ioc)	((__ioc)->attr->rx_bbcredit)
#define bfa_ioc_speed_sup(__ioc)	\
	BFI_ADAPTER_GETP(SPEED, (__ioc)->attr->adapter_prop)
	((bfa_ioc_is_cna(__ioc)) ? BFA_PORT_SPEED_10GBPS :	\
	 BFI_ADAPTER_GETP(SPEED, (__ioc)->attr->adapter_prop))
#define bfa_ioc_get_nports(__ioc)	\
	BFI_ADAPTER_GETP(NPORTS, (__ioc)->attr->adapter_prop)