> Do you expect to return an error if adjust_link is called with > phydev->duplex == DUPLEX_UNKNOWN, or, do you expect to fallback to > unforced duplex when setting such value?
ethtool(1) itself does not allow you to specify "unknown". It only allows "full" or "half". So passing DUPLEX_UNKNOWN means using the API directly. The core ethtool code does not sanity check the request, so will pass on DUPLEX_UNKNOWN to the drivers. A quick search of the drivers, 99% seem to ignore DUPLEX_UNKNOWN. The 1% is bnx2x, which has: /* If received a request for an unknown duplex, assume full*/ if (cmd->duplex == DUPLEX_UNKNOWN) cmd->duplex = DUPLEX_FULL; I personally would return -EINVAL, since it is unclear what DUPLEX_UNKNOWN means. It could be argued that falling back to Half is correct, since failed autoneg generally results in 10/Half. Every Ethernet can do that, where as a device needs to be 25 years or younger to support Full :-) Andrew