aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2.c
diff options
context:
space:
mode:
authorMatt Carlson <mcarlson@broadcom.com>2010-02-26 09:04:40 -0500
committerDavid S. Miller <davem@davemloft.net>2010-02-28 03:43:31 -0500
commit7ad506fa1adc2da3d394c562f09b8e1b3026c402 (patch)
treea4ace2d9918a000d7983eb0770f2346ed7e323aa /drivers/net/bnx2.c
parenta2ce766238f72ff7337606c0bc96803c30c9e05c (diff)
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.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index bb403887b549..084ef102b8c4 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -7772,15 +7772,26 @@ bnx2_read_vpd_fw_ver(struct bnx2 *bp)
7772 unsigned char val = data[i]; 7772 unsigned char val = data[i];
7773 unsigned int block_end; 7773 unsigned int block_end;
7774 7774
7775 if (val == 0x82 || val == 0x91) { 7775 if (val & PCI_VPD_LRDT) {
7776 i += PCI_VPD_LRDT_TAG_SIZE + 7776 if (i + PCI_VPD_LRDT_TAG_SIZE > BNX2_VPD_LEN)
7777 pci_vpd_lrdt_size(&data[i]); 7777 break;
7778
7779 if (val != PCI_VPD_LRDT_RO_DATA) {
7780 i += PCI_VPD_LRDT_TAG_SIZE +
7781 pci_vpd_lrdt_size(&data[i]);
7782
7783 continue;
7784 }
7785 } else {
7786 if ((val & PCI_VPD_SRDT_TIN_MASK) == PCI_VPD_STIN_END)
7787 break;
7788
7789 i += PCI_VPD_SRDT_TAG_SIZE +
7790 pci_vpd_srdt_size(&data[i]);
7791
7778 continue; 7792 continue;
7779 } 7793 }
7780 7794
7781 if (val != 0x90)
7782 goto vpd_done;
7783
7784 block_end = (i + PCI_VPD_LRDT_TAG_SIZE + 7795 block_end = (i + PCI_VPD_LRDT_TAG_SIZE +
7785 pci_vpd_lrdt_size(&data[i])); 7796 pci_vpd_lrdt_size(&data[i]));
7786 i += PCI_VPD_LRDT_TAG_SIZE; 7797 i += PCI_VPD_LRDT_TAG_SIZE;