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: Chad Dupuis <chad.dupuis@cavium.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
21144b8061
commit
59fb870f0e
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue