Commit 59fb870f authored by Chad Dupuis's avatar Chad Dupuis Committed by Martin K. Petersen

scsi: bnx2fc: Adjust bnx2fc_npiv_create_vports for WWNNs from NVRAM that are zero.

Some vports addresses stored in NVRAM may have zero for the WWNN.  Adjust
the WWNN that we'll use to be the same as the WWPN.
Signed-off-by: default avatarChad Dupuis <chad.dupuis@cavium.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 21144b80
......@@ -2139,6 +2139,9 @@ static uint bnx2fc_npiv_create_vports(struct fc_lport *lport,
{
struct fc_vport_identifiers vpid;
uint i, created = 0;
u64 wwnn = 0;
char wwpn_str[32];
char wwnn_str[32];
if (npiv_tbl->count > MAX_NPIV_ENTRIES) {
BNX2FC_HBA_DBG(lport, "Exceeded count max of npiv table\n");
......@@ -2157,11 +2160,23 @@ static uint bnx2fc_npiv_create_vports(struct fc_lport *lport,
vpid.disable = false;
for (i = 0; i < npiv_tbl->count; i++) {
vpid.node_name = wwn_to_u64(npiv_tbl->wwnn[i]);
wwnn = wwn_to_u64(npiv_tbl->wwnn[i]);
if (wwnn == 0) {
/*
* If we get a 0 element from for the WWNN then assume
* the WWNN should be the same as the physical port.
*/
wwnn = lport->wwnn;
}
vpid.node_name = wwnn;
vpid.port_name = wwn_to_u64(npiv_tbl->wwpn[i]);
scnprintf(vpid.symbolic_name, sizeof(vpid.symbolic_name),
"NPIV[%u]:%016llx-%016llx",
created, vpid.port_name, vpid.node_name);
fcoe_wwn_to_str(vpid.node_name, wwnn_str, sizeof(wwnn_str));
fcoe_wwn_to_str(vpid.port_name, wwpn_str, sizeof(wwpn_str));
BNX2FC_HBA_DBG(lport, "Creating vport %s:%s.\n", wwnn_str,
wwpn_str);
if (fc_vport_create(lport->host, 0, &vpid))
created++;
else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment