提交 134a4e27 编写于 作者: V Vasu Dev 提交者: James Bottomley

[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: NVasu Dev <vasu.dev@intel.com>
Acked-by: NBhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
上级 e37c4913
...@@ -1254,20 +1254,17 @@ static int bnx2fc_interface_setup(struct bnx2fc_hba *hba, ...@@ -1254,20 +1254,17 @@ static int bnx2fc_interface_setup(struct bnx2fc_hba *hba,
static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba, static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba,
struct device *parent, int npiv) struct device *parent, int npiv)
{ {
struct fc_lport *lport = NULL; struct fc_lport *lport, *n_port;
struct fcoe_port *port; struct fcoe_port *port;
struct Scsi_Host *shost; struct Scsi_Host *shost;
struct fc_vport *vport = dev_to_vport(parent); struct fc_vport *vport = dev_to_vport(parent);
int rc = 0; int rc = 0;
/* Allocate Scsi_Host structure */ /* Allocate Scsi_Host structure */
if (!npiv) { if (!npiv)
lport = libfc_host_alloc(&bnx2fc_shost_template, lport = libfc_host_alloc(&bnx2fc_shost_template, sizeof(*port));
sizeof(struct fcoe_port)); else
} else { lport = libfc_vport_create(vport, sizeof(*port));
lport = libfc_vport_create(vport,
sizeof(struct fcoe_port));
}
if (!lport) { if (!lport) {
printk(KERN_ERR PFX "could not allocate scsi host structure\n"); 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, ...@@ -1285,7 +1282,6 @@ static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba,
goto lp_config_err; goto lp_config_err;
if (npiv) { if (npiv) {
vport = dev_to_vport(parent);
printk(KERN_ERR PFX "Setting vport names, 0x%llX 0x%llX\n", printk(KERN_ERR PFX "Setting vport names, 0x%llX 0x%llX\n",
vport->node_name, vport->port_name); vport->node_name, vport->port_name);
fc_set_wwnn(lport, vport->node_name); fc_set_wwnn(lport, vport->node_name);
...@@ -1314,12 +1310,17 @@ static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba, ...@@ -1314,12 +1310,17 @@ static struct fc_lport *bnx2fc_if_create(struct bnx2fc_hba *hba,
fc_host_port_type(lport->host) = FC_PORTTYPE_UNKNOWN; fc_host_port_type(lport->host) = FC_PORTTYPE_UNKNOWN;
/* Allocate exchange manager */ /* Allocate exchange manager */
if (!npiv) { if (!npiv)
rc = bnx2fc_em_config(lport); rc = bnx2fc_em_config(lport);
if (rc) { else {
printk(KERN_ERR PFX "Error on bnx2fc_em_config\n"); shost = vport_to_shost(vport);
goto shost_err; 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); bnx2fc_interface_get(hba);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册