Use fc_exch_mgr_list_clone to setup em for npiv port.

Also remove redundant vport and lport initializations.

Signed-off-by: Vasu Dev <[email protected]>
---

 drivers/scsi/bnx2fc/bnx2fc_fcoe.c |   29 +++++++++++++++--------------
 1 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c 
b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
index e476e87..71842a7 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
@@ -1296,20 +1296,17 @@ setup_err:
 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");
@@ -1327,7 +1324,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);
@@ -1356,12 +1352,17 @@ 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);
-               if (rc) {
-                       printk(KERN_ERR PFX "Error on bnx2fc_em_config\n");
-                       goto shost_err;
-               }
+       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);

_______________________________________________
devel mailing list
[email protected]
https://lists.open-fcoe.org/mailman/listinfo/devel

Reply via email to