Skip to content

Commit

Permalink
bnx2: Search VPD with pci_vpd_find_ro_info_keyword()
Browse files Browse the repository at this point in the history
Use pci_vpd_find_ro_info_keyword() to search for keywords in VPD to
simplify the code.

Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Heiner Kallweit <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
  • Loading branch information
hkallweit authored and bjorn-helgaas committed Aug 24, 2021
1 parent 2d57dd6 commit 1a41fdb
Showing 1 changed file with 8 additions and 25 deletions.
33 changes: 8 additions & 25 deletions drivers/net/ethernet/broadcom/bnx2.c
Original file line number Diff line number Diff line change
Expand Up @@ -8033,9 +8033,9 @@ bnx2_get_pci_speed(struct bnx2 *bp)
static void
bnx2_read_vpd_fw_ver(struct bnx2 *bp)
{
unsigned int len;
int rc, i, j;
u8 *data;
unsigned int block_end, rosize, len;

#define BNX2_VPD_NVRAM_OFFSET 0x300
#define BNX2_VPD_LEN 128
Expand All @@ -8057,38 +8057,21 @@ bnx2_read_vpd_fw_ver(struct bnx2 *bp)
data[i + 3] = data[i + BNX2_VPD_LEN];
}

i = pci_vpd_find_tag(data, BNX2_VPD_LEN, PCI_VPD_LRDT_RO_DATA);
if (i < 0)
goto vpd_done;

rosize = pci_vpd_lrdt_size(&data[i]);
i += PCI_VPD_LRDT_TAG_SIZE;
block_end = i + rosize;

if (block_end > BNX2_VPD_LEN)
goto vpd_done;

j = pci_vpd_find_info_keyword(data, i, rosize,
PCI_VPD_RO_KEYWORD_MFR_ID);
j = pci_vpd_find_ro_info_keyword(data, BNX2_VPD_LEN,
PCI_VPD_RO_KEYWORD_MFR_ID, &len);
if (j < 0)
goto vpd_done;

len = pci_vpd_info_field_size(&data[j]);

j += PCI_VPD_INFO_FLD_HDR_SIZE;
if (j + len > block_end || len != 4 ||
memcmp(&data[j], "1028", 4))
if (len != 4 || memcmp(&data[j], "1028", 4))
goto vpd_done;

j = pci_vpd_find_info_keyword(data, i, rosize,
PCI_VPD_RO_KEYWORD_VENDOR0);
j = pci_vpd_find_ro_info_keyword(data, BNX2_VPD_LEN,
PCI_VPD_RO_KEYWORD_VENDOR0,
&len);
if (j < 0)
goto vpd_done;

len = pci_vpd_info_field_size(&data[j]);

j += PCI_VPD_INFO_FLD_HDR_SIZE;
if (j + len > block_end || len > BNX2_MAX_VER_SLEN)
if (len > BNX2_MAX_VER_SLEN)
goto vpd_done;

memcpy(bp->fw_version, &data[j], len);
Expand Down

0 comments on commit 1a41fdb

Please sign in to comment.