diff options
author | Matt Carlson <mcarlson@broadcom.com> | 2010-02-26 14:04:40 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-28 00:43:31 -0800 |
commit | 7ad506fa1adc2da3d394c562f09b8e1b3026c402 (patch) | |
tree | a4ace2d9918a000d7983eb0770f2346ed7e323aa /drivers/net/bnx2.c | |
parent | a2ce766238f72ff7337606c0bc96803c30c9e05c (diff) | |
download | kernel_samsung_smdk4412-7ad506fa1adc2da3d394c562f09b8e1b3026c402.tar.gz kernel_samsung_smdk4412-7ad506fa1adc2da3d394c562f09b8e1b3026c402.tar.bz2 kernel_samsung_smdk4412-7ad506fa1adc2da3d394c562f09b8e1b3026c402.zip |
pci: Add large and small resource data type code
This patch introduces more VPD preprocessor definitions to identify some
small and large resource data type item names. The patch then continues
to correct how the tg3 and bnx2 drivers search for the "read-only data"
large resource data type.
Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2.c')
-rw-r--r-- | drivers/net/bnx2.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index bb403887b54..084ef102b8c 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c @@ -7772,15 +7772,26 @@ bnx2_read_vpd_fw_ver(struct bnx2 *bp) unsigned char val = data[i]; unsigned int block_end; - if (val == 0x82 || val == 0x91) { - i += PCI_VPD_LRDT_TAG_SIZE + - pci_vpd_lrdt_size(&data[i]); + if (val & PCI_VPD_LRDT) { + if (i + PCI_VPD_LRDT_TAG_SIZE > BNX2_VPD_LEN) + break; + + if (val != PCI_VPD_LRDT_RO_DATA) { + i += PCI_VPD_LRDT_TAG_SIZE + + pci_vpd_lrdt_size(&data[i]); + + continue; + } + } else { + if ((val & PCI_VPD_SRDT_TIN_MASK) == PCI_VPD_STIN_END) + break; + + i += PCI_VPD_SRDT_TAG_SIZE + + pci_vpd_srdt_size(&data[i]); + continue; } - if (val != 0x90) - goto vpd_done; - block_end = (i + PCI_VPD_LRDT_TAG_SIZE + pci_vpd_lrdt_size(&data[i])); i += PCI_VPD_LRDT_TAG_SIZE; |