phy_mii_ioctl - phydev->advertising ethtool.h vs. mii.h

From: Domen Puncer <hidden>
Date: 2007-08-06 08:45:29

Hi!

I've noticed mii-tool doesn't work right for a driver I'm just
developing (it uses generic phy layer).
Driver's ioctl is wired directly to phy_mii_ioctl().

"mii-tool -A something" shows the problem is in
phy_mii_ioctl -> SIOCSMIIREG:
392                         case MII_ADVERTISE:
393                                 phydev->advertising = val;
394                                 break;  

phydev->advertising value should be combined with ones from
ethtool.h (at least in other usages it is):
	437 #define ADVERTISED_10baseT_Half         (1 << 0)
	438 #define ADVERTISED_10baseT_Full         (1 << 1)
	439 #define ADVERTISED_100baseT_Half        (1 << 2)
	440 #define ADVERTISED_100baseT_Full        (1 << 3)

but mii-tool sends a mask with values from mii.h:
	 70 #define ADVERTISE_10HALF        0x0020  /* Try for 10mbps half-duplex  */
	 71 #define ADVERTISE_1000XFULL     0x0020  /* Try for 1000BASE-X full-duplex */
	 72 #define ADVERTISE_10FULL        0x0040  /* Try for 10mbps full-duplex  */
	 73 #define ADVERTISE_1000XHALF     0x0040  /* Try for 1000BASE-X half-duplex */
	 74 #define ADVERTISE_100HALF       0x0080  /* Try for 100mbps half-duplex */
	...

I'm I right that this is a bug?
Comments, suggestions how to fix it?


	Domen
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help