Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 134a4e27 authored by Vasu Dev's avatar Vasu Dev Committed by James Bottomley
Browse files

[SCSI] bnx2fc: setup em for npiv port



Use fc_exch_mgr_list_clone to setup em for npiv port.

Also remove redundant vport and lport initializations.

Signed-off-by: default avatarVasu Dev <vasu.dev@intel.com>
Acked-by: default avatarBhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent e37c4913
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -1254,20 +1254,17 @@ static int bnx2fc_interface_setup(struct bnx2fc_hba *hba,
static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba,
				  struct device *parent, int npiv)
{
	struct fc_lport		*lport = NULL;
	struct fc_lport		*lport, *n_port;
	struct fcoe_port	*port;
	struct Scsi_Host	*shost;
	struct fc_vport		*vport = dev_to_vport(parent);
	int			rc = 0;

	/* Allocate Scsi_Host structure */
	if (!npiv) {
		lport = libfc_host_alloc(&bnx2fc_shost_template,
					  sizeof(struct fcoe_port));
	} else {
		lport = libfc_vport_create(vport,
					   sizeof(struct fcoe_port));
	}
	if (!npiv)
		lport = libfc_host_alloc(&bnx2fc_shost_template, sizeof(*port));
	else
		lport = libfc_vport_create(vport, sizeof(*port));

	if (!lport) {
		printk(KERN_ERR PFX "could not allocate scsi host structure\n");
@@ -1285,7 +1282,6 @@ static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba,
		goto lp_config_err;

	if (npiv) {
		vport = dev_to_vport(parent);
		printk(KERN_ERR PFX "Setting vport names, 0x%llX 0x%llX\n",
			vport->node_name, vport->port_name);
		fc_set_wwnn(lport, vport->node_name);
@@ -1314,13 +1310,18 @@ static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba,
	fc_host_port_type(lport->host) = FC_PORTTYPE_UNKNOWN;

	/* Allocate exchange manager */
	if (!npiv) {
	if (!npiv)
		rc = bnx2fc_em_config(lport);
	else {
		shost = vport_to_shost(vport);
		n_port = shost_priv(shost);
		rc = fc_exch_mgr_list_clone(n_port, lport);
	}

	if (rc) {
		printk(KERN_ERR PFX "Error on bnx2fc_em_config\n");
		goto shost_err;
	}
	}

	bnx2fc_interface_get(hba);
	return lport;