net: mii: add mii_bmcr_encode_fixed()
Add a function to encode a fixed speed/duplex to a BMCR value. Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
5d1d527cd9
commit
bdb6cfe751
@ -545,4 +545,39 @@ static inline u8 mii_resolve_flowctrl_fdx(u16 lcladv, u16 rmtadv)
|
||||
return cap;
|
||||
}
|
||||
|
||||
/**
|
||||
* mii_bmcr_encode_fixed - encode fixed speed/duplex settings to a BMCR value
|
||||
* @speed: a SPEED_* value
|
||||
* @duplex: a DUPLEX_* value
|
||||
*
|
||||
* Encode the speed and duplex to a BMCR value. 2500, 1000, 100 and 10 Mbps are
|
||||
* supported. 2500Mbps is encoded to 1000Mbps. Other speeds are encoded as 10
|
||||
* Mbps. Unknown duplex values are encoded to half-duplex.
|
||||
*/
|
||||
static inline u16 mii_bmcr_encode_fixed(int speed, int duplex)
|
||||
{
|
||||
u16 bmcr;
|
||||
|
||||
switch (speed) {
|
||||
case SPEED_2500:
|
||||
case SPEED_1000:
|
||||
bmcr = BMCR_SPEED1000;
|
||||
break;
|
||||
|
||||
case SPEED_100:
|
||||
bmcr = BMCR_SPEED100;
|
||||
break;
|
||||
|
||||
case SPEED_10:
|
||||
default:
|
||||
bmcr = BMCR_SPEED10;
|
||||
break;
|
||||
}
|
||||
|
||||
if (duplex == DUPLEX_FULL)
|
||||
bmcr |= BMCR_FULLDPLX;
|
||||
|
||||
return bmcr;
|
||||
}
|
||||
|
||||
#endif /* __LINUX_MII_H__ */
|
||||
|
Reference in New Issue
Block a user