scsi: cxlflash: Refactor WWPN setup
Commit 964497b3bf
("cxlflash: Remove dual port online dependency")
logically removed the ability for the WWPN setup routine afu_set_wwpn()
to return a non-success value. This routine can safely be made a void to
simplify the code as there is no longer a need to report a failure.
Signed-off-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Acked-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
05dab43230
commit
f80132613d
|
@ -1093,42 +1093,25 @@ static int wait_port_offline(__be64 __iomem *fc_regs, u32 delay_us, u32 nretry)
|
|||
* online. This toggling action can cause this routine to delay up to a few
|
||||
* seconds. When configured to use the internal LUN feature of the AFU, a
|
||||
* failure to come online is overridden.
|
||||
*
|
||||
* Return:
|
||||
* 0 when the WWPN is successfully written and the port comes back online
|
||||
* -1 when the port fails to go offline or come back up online
|
||||
*/
|
||||
static int afu_set_wwpn(struct afu *afu, int port, __be64 __iomem *fc_regs,
|
||||
u64 wwpn)
|
||||
static void afu_set_wwpn(struct afu *afu, int port, __be64 __iomem *fc_regs,
|
||||
u64 wwpn)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
set_port_offline(fc_regs);
|
||||
|
||||
if (!wait_port_offline(fc_regs, FC_PORT_STATUS_RETRY_INTERVAL_US,
|
||||
FC_PORT_STATUS_RETRY_CNT)) {
|
||||
pr_debug("%s: wait on port %d to go offline timed out\n",
|
||||
__func__, port);
|
||||
rc = -1; /* but continue on to leave the port back online */
|
||||
}
|
||||
|
||||
if (rc == 0)
|
||||
writeq_be(wwpn, &fc_regs[FC_PNAME / 8]);
|
||||
|
||||
/* Always return success after programming WWPN */
|
||||
rc = 0;
|
||||
writeq_be(wwpn, &fc_regs[FC_PNAME / 8]);
|
||||
|
||||
set_port_online(fc_regs);
|
||||
|
||||
if (!wait_port_online(fc_regs, FC_PORT_STATUS_RETRY_INTERVAL_US,
|
||||
FC_PORT_STATUS_RETRY_CNT)) {
|
||||
pr_err("%s: wait on port %d to go online timed out\n",
|
||||
__func__, port);
|
||||
pr_debug("%s: wait on port %d to go online timed out\n",
|
||||
__func__, port);
|
||||
}
|
||||
|
||||
pr_debug("%s: returning rc=%d\n", __func__, rc);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1629,15 +1612,10 @@ static int init_global(struct cxlflash_cfg *cfg)
|
|||
[FC_CRC_THRESH / 8]);
|
||||
|
||||
/* Set WWPNs. If already programmed, wwpn[i] is 0 */
|
||||
if (wwpn[i] != 0 &&
|
||||
afu_set_wwpn(afu, i,
|
||||
&afu->afu_map->global.fc_regs[i][0],
|
||||
wwpn[i])) {
|
||||
dev_err(dev, "%s: failed to set WWPN on port %d\n",
|
||||
__func__, i);
|
||||
rc = -EIO;
|
||||
goto out;
|
||||
}
|
||||
if (wwpn[i] != 0)
|
||||
afu_set_wwpn(afu, i,
|
||||
&afu->afu_map->global.fc_regs[i][0],
|
||||
wwpn[i]);
|
||||
/* Programming WWPN back to back causes additional
|
||||
* offline/online transitions and a PLOGI
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue