tsec: report when there is no vendor specific PHY support
authorPaul Gortmaker <paul.gortmaker@windriver.com>
Mon, 9 Mar 2009 23:07:53 +0000 (18:07 -0500)
committerAndy Fleming <afleming@freescale.com>
Mon, 9 Mar 2009 23:08:04 +0000 (18:08 -0500)
Commit af1c2b84 added a generic phy support, with an ID of zero
and a 32 bit mask; meaning that it will match on any PHY ID.

The problem is that there is a test that checked if a matching
PHY was found, and if not, it printed the non-matching ID.
But since there will always be a match (on the generic PHY,
worst case), this test will never trip.

In the case of a misconfigured PHY address, or of a PHY that
isn't explicitly supported outside of the generic support,
you will never see the ID of 0xffffffff, or the ID of the
real (but unsupported) chip.  It will silently fall through
onto the generic support.

This change makes that test useful again, and ensures that
the selection of generic PHY support doesn't happen without
some sort of notice.  It also makes it explicitly clear that
the generic PHY must be last in the PHY table.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Acked-by: Andy Fleming <afleming@freescale.com>
drivers/net/tsec.c

index 1f5d1b44a4874ba93be6c4b821f7de863d19e9b3..399116f3a258c6540fe13c6f88d778847719bd83 100644 (file)
@@ -1624,7 +1624,7 @@ struct phy_info *phy_info[] = {
        &phy_info_VSC8601,
        &phy_info_dp83865,
        &phy_info_rtl8211b,
-       &phy_info_generic,
+       &phy_info_generic,      /* must be last; has ID 0 and 32 bit mask */
        NULL
 };
 
@@ -1656,9 +1656,8 @@ struct phy_info *get_phy_info(struct eth_device *dev)
                }
        }
 
-       if (theInfo == NULL) {
-               printf("%s: PHY id %x is not supported!\n", dev->name, phy_ID);
-               return NULL;
+       if (theInfo == &phy_info_generic) {
+               printf("%s: No support for PHY id %x; assuming generic\n", dev->name, phy_ID);
        } else {
                debug("%s: PHY is %s (%x)\n", dev->name, theInfo->name, phy_ID);
        }