b44: Truncate PHY address
Subsystems (2)
PATCH 1/1 b44: Truncate PHY address
Some ROMs on embedded devices store incorrect values for the PHY address of the ethernet device.
It looks like the number is sign-extended. Truncate the value by applying the PHY-address mask to it.
Signed-off-by Michael Buesch <[email protected]>
---
This patch is untested and needs some testing before it can go upstream, but I think the chance of introducing bugs with this is almost zero, as the PHY address register really is only 5 bits long. So this will do The Right Thing (tm) in any case. Please report result of the testing back to me. I will also run some tests later and then submit the patch for inclusion.
drivers/net/b44.c +5 -0
@@ -2082,6 +2082,11 @@ static int __devinit b44_get_invariants( addr = sdev->bus->sprom.et0mac; bp->phy_addr = sdev->bus->sprom.et0phyaddr; } +/* Some ROMs have buggy PHY addresses with the high +* bits set (sign extension?). Truncate them to a +* valid PHY address. */ + bp->phy_addr &=0x1F ; +memcpy (bp->dev->dev_addr, addr,6 );if (!is_valid_ether_addr (&bp->dev->dev_addr[0 ])){
Signature · 1 line
Greetings Michael.