]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/net/bnx2.c
pci: Add helper to find a VPD resource data type
[net-next-2.6.git] / drivers / net / bnx2.c
index d3f739a295df7c8a564994b20b476730328b3e99..fd43feb5a350d0d8f6fb1ae9c6481174dcdb2e34 100644 (file)
@@ -7769,19 +7769,16 @@ bnx2_read_vpd_fw_ver(struct bnx2 *bp)
        }
 
        for (i = 0; i <= BNX2_VPD_LEN - 3; ) {
-               unsigned char val = data[i];
                unsigned int block_end;
 
-               if (val == 0x82 || val == 0x91) {
-                       i = (i + 3 + (data[i + 1] + (data[i + 2] << 8)));
-                       continue;
-               }
-
-               if (val != 0x90)
-                       goto vpd_done;
+               i = pci_vpd_find_tag(data, i, BNX2_VPD_LEN,
+                                    PCI_VPD_LRDT_RO_DATA);
+               if (i < 0)
+                       break;
 
-               block_end = (i + 3 + (data[i + 1] + (data[i + 2] << 8)));
-               i += 3;
+               block_end = (i + PCI_VPD_LRDT_TAG_SIZE +
+                           pci_vpd_lrdt_size(&data[i]));
+               i += PCI_VPD_LRDT_TAG_SIZE;
 
                if (block_end > BNX2_VPD_LEN)
                        goto vpd_done;