提交 59fb870f 编写于 作者: C Chad Dupuis 提交者: 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: NChad Dupuis <chad.dupuis@cavium.com>
Signed-off-by: NMartin K. Petersen <martin.petersen@oracle.com>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册