[TG3]: Fix Sun tg3 variant detection.
authorDavid S. Miller <davem@davemloft.net>
Mon, 27 Feb 2006 20:51:27 +0000 (12:51 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 27 Feb 2006 20:51:27 +0000 (12:51 -0800)
Some Sun parts don't have PCI_VENDOR_ID_SUN in the subsystem
vendor ID.  So add another fallback test, which is the name
of the OBP firmware device tree node.  If it's a Sun part we'll
get "network", else it will be named "ethernet".

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c

index e7dc653d5bd673ff10fb56970c25bc29a50a9815..e8e92c853e89dbc867c34c701f86a011ce969517 100644 (file)
@@ -9408,6 +9408,15 @@ static int __devinit tg3_is_sun_570X(struct tg3 *tp)
                        return 0;
                if (venid == PCI_VENDOR_ID_SUN)
                        return 1;
+
+               /* TG3 chips onboard the SunBlade-2500 don't have the
+                * subsystem-vendor-id set to PCI_VENDOR_ID_SUN but they
+                * are distinguishable from non-Sun variants by being
+                * named "network" by the firmware.  Non-Sun cards will
+                * show up as being named "ethernet".
+                */
+               if (!strcmp(pcp->prom_name, "network"))
+                       return 1;
        }
        return 0;
 }