mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-15 00:34:10 +08:00
scsi: qedf: Use pci_get_dsn()
Replace the open-coded implementation for reading the PCIe DSN with pci_get_dsn(). The original code used a for-loop that looped over each of the 8 bytes and copied them into a temporary buffer. pci_get_dsn() uses two calls to pci_read_config_dword, and correctly bitwise ORs them into a u64. Thus, we can simplify the snprintf significantly using %016llX on a u64 value. Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8d85b75b4e
commit
dbce64cbee
@ -1577,8 +1577,7 @@ static void qedf_setup_fdmi(struct qedf_ctx *qedf)
|
||||
{
|
||||
struct fc_lport *lport = qedf->lport;
|
||||
struct fc_host_attrs *fc_host = shost_to_fc_host(lport->host);
|
||||
u8 buf[8];
|
||||
int i, pos;
|
||||
u64 dsn;
|
||||
|
||||
/*
|
||||
* fdmi_enabled needs to be set for libfc to execute FDMI registration.
|
||||
@ -1591,18 +1590,11 @@ static void qedf_setup_fdmi(struct qedf_ctx *qedf)
|
||||
*/
|
||||
|
||||
/* Get the PCI-e Device Serial Number Capability */
|
||||
pos = pci_find_ext_capability(qedf->pdev, PCI_EXT_CAP_ID_DSN);
|
||||
if (pos) {
|
||||
pos += 4;
|
||||
for (i = 0; i < 8; i++)
|
||||
pci_read_config_byte(qedf->pdev, pos + i, &buf[i]);
|
||||
|
||||
dsn = pci_get_dsn(qedf->pdev);
|
||||
if (dsn)
|
||||
snprintf(fc_host->serial_number,
|
||||
sizeof(fc_host->serial_number),
|
||||
"%02X%02X%02X%02X%02X%02X%02X%02X",
|
||||
buf[7], buf[6], buf[5], buf[4],
|
||||
buf[3], buf[2], buf[1], buf[0]);
|
||||
} else
|
||||
sizeof(fc_host->serial_number), "%016llX", dsn);
|
||||
else
|
||||
snprintf(fc_host->serial_number,
|
||||
sizeof(fc_host->serial_number), "Unknown");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user