On Thursday 25 June 2015 11:01 PM, Florian Fainelli wrote: > 2015-06-25 9:51 GMT-07:00 Mugunthan V N <mugunthan...@ti.com>: >> > When limiting phy link speed using "max-speed" to 100mbps or less on a >> > giga bit phy, phy never completes auto negotiation and phy state >> > machine is held in PHY_AN. Fixing this issue by comparing the giga >> > bit advertise though phydev->supported doesn't have it but phy has >> > BMSR_ESTATEN set. So that auto negotiation is restarted as old and >> > new advertise are different and link comes up fine. > This looks valid, however, I am curious why this part of the code: > > oldadv = adv; > adv &= ~(ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_PAUSE_CAP | > ADVERTISE_PAUSE_ASYM); > adv |= ethtool_adv_to_mii_adv_t(advertise); > > if (adv != oldadv) { > err = phy_write(phydev, MII_ADVERTISE, adv); > > if (err < 0) > return err; > changed = 1; > } > > Is not flagging this as a change already? >
This can flag a change when the selected limit is 10mbps, if 100mbps is selected, at this instant oldadv and adv are same so change is not flagged here. Regards Mugunthan V N -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html