On Sun, 16 Jul 2017 15:33:26 +0300 Andrew Rybchenko <arybche...@solarflare.com> wrote:
> > + link.link_autoneg = ETH_LINK_SPEED_FIXED; > > As I understand link_autoneg is 1 bit field with boolean semantics. I.e. > 0/false - no autoneg, 1/true - autoneg. > It looks like it has wrong comment: > uint16_t link_autoneg : 1; /**< ETH_LINK_SPEED_[AUTONEG/FIXED] */ > > since > #define ETH_LINK_SPEED_AUTONEG (0 << 0) /**< Autonegotiate (all speeds) */ > #define ETH_LINK_SPEED_FIXED (1 << 0) /**< Disable autoneg (fixed speed) > */ > > whereas > #define ETH_LINK_FIXED 0 /**< No autonegotiation. */ > #define ETH_LINK_AUTONEG 1 /**< Autonegotiated. */ > > In general this attempt to introduce bug is the result of wrong comment which > is caused by very similar > defines with opposite values. Orignal observation was because some drivers (vmxnet3) were setting autoneg = fixed and others were not. Turns out it makes no difference since FIXED == 0, the old code and new code have same effect.