aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/tg3.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/tg3.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/tg3.c')
-rw-r--r--drivers/net/tg3.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index 5fccbe459949..ed57a62b3ac8 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -12589,15 +12589,26 @@ static void __devinit tg3_read_partno(struct tg3 *tp)
12589 unsigned char val = vpd_data[i]; 12589 unsigned char val = vpd_data[i];
12590 unsigned int block_end; 12590 unsigned int block_end;
12591 12591
12592 if (val == 0x82 || val == 0x91) { 12592 if (val & PCI_VPD_LRDT) {
12593 i += PCI_VPD_LRDT_TAG_SIZE + 12593 if (i + PCI_VPD_LRDT_TAG_SIZE > TG3_NVM_VPD_LEN)
12594 pci_vpd_lrdt_size(&vpd_data[i]); 12594 break;
12595
12596 if (val != PCI_VPD_LRDT_RO_DATA) {
12597 i += PCI_VPD_LRDT_TAG_SIZE +
12598 pci_vpd_lrdt_size(&vpd_data[i]);
12599
12600 continue;
12601 }
12602 } else {
12603 if ((val & PCI_VPD_SRDT_TIN_MASK) == PCI_VPD_STIN_END)
12604 break;
12605
12606 i += PCI_VPD_SRDT_TAG_SIZE +
12607 pci_vpd_srdt_size(&vpd_data[i]);
12608
12595 continue; 12609 continue;
12596 } 12610 }
12597 12611
12598 if (val != 0x90)
12599 goto out_not_found;
12600
12601 block_end = i + PCI_VPD_LRDT_TAG_SIZE + 12612 block_end = i + PCI_VPD_LRDT_TAG_SIZE +
12602 pci_vpd_lrdt_size(&vpd_data[i]); 12613 pci_vpd_lrdt_size(&vpd_data[i]);
12603 12614