X-Git-Url: https://bbs.cooldavid.org/git/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnx2.c;h=fd43feb5a350d0d8f6fb1ae9c6481174dcdb2e34;hb=b55ac1b22690d2e5b02a61cf6d69c2d66969c79d;hp=d3f739a295df7c8a564994b20b476730328b3e99;hpb=38bdbd8efc8a661dedb52264359531b3a1c11716;p=net-next-2.6.git diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index d3f739a295d..fd43feb5a35 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c @@ -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;