Merge tag 'pci-v5.15-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaa...
[linux-2.6-microblaze.git] / drivers / net / ethernet / broadcom / bnx2.c
index a705e26..8c83973 100644 (file)
@@ -8038,9 +8038,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
@@ -8057,38 +8057,21 @@ bnx2_read_vpd_fw_ver(struct bnx2 *bp)
        for (i = 0; i < BNX2_VPD_LEN; i += 4)
                swab32s((u32 *)&data[i]);
 
-       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);