out_not_found:
        kfree(vpd_data);
-       if (!tp->board_part_number[0])
+       if (tp->board_part_number[0])
                return;
 
 out_no_vpd:
-       if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906)
+       if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717) {
+               if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_5717)
+                       strcpy(tp->board_part_number, "BCM5717");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_5718)
+                       strcpy(tp->board_part_number, "BCM5718");
+               else
+                       goto nomatch;
+       } else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780) {
+               if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57780)
+                       strcpy(tp->board_part_number, "BCM57780");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57760)
+                       strcpy(tp->board_part_number, "BCM57760");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57790)
+                       strcpy(tp->board_part_number, "BCM57790");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57788)
+                       strcpy(tp->board_part_number, "BCM57788");
+               else
+                       goto nomatch;
+       } else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765) {
+               if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57761)
+                       strcpy(tp->board_part_number, "BCM57761");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57765)
+                       strcpy(tp->board_part_number, "BCM57765");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57781)
+                       strcpy(tp->board_part_number, "BCM57781");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57785)
+                       strcpy(tp->board_part_number, "BCM57785");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57791)
+                       strcpy(tp->board_part_number, "BCM57791");
+               else if (tp->pdev->device == TG3PCI_DEVICE_TIGON3_57795)
+                       strcpy(tp->board_part_number, "BCM57795");
+               else
+                       goto nomatch;
+       } else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) {
                strcpy(tp->board_part_number, "BCM95906");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57780)
-               strcpy(tp->board_part_number, "BCM57780");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57760)
-               strcpy(tp->board_part_number, "BCM57760");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57790)
-               strcpy(tp->board_part_number, "BCM57790");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57788)
-               strcpy(tp->board_part_number, "BCM57788");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57761)
-               strcpy(tp->board_part_number, "BCM57761");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57765)
-               strcpy(tp->board_part_number, "BCM57765");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57781)
-               strcpy(tp->board_part_number, "BCM57781");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57785)
-               strcpy(tp->board_part_number, "BCM57785");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57791)
-               strcpy(tp->board_part_number, "BCM57791");
-       else if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57765 &&
-                tp->pdev->device == TG3PCI_DEVICE_TIGON3_57795)
-               strcpy(tp->board_part_number, "BCM57795");
-       else
+       } else {
+nomatch:
                strcpy(tp->board_part_number, "none");
+       }
 }
 
 static int __devinit tg3_fw_img_is_valid(struct tg3 *tp, u32 offset)