From: Mahesh Bandewar <mah...@bandewar.net> Date: Mon, 27 Mar 2017 11:37:24 -0700
> From: Mahesh Bandewar <mahe...@google.com> > > The mii monitoring is divided into two phases - inspect and commit. The > inspect phase technically should not make any changes to the state and > defer it to the commit phase. However detected link state inconsistencies > on several machines and discovered that it's the result of some > inconsistent update to link states and assumption that you *always* get > rtnl-mutex. In reality when trylock() fails to acquire rtnl-mutex, the > commit phase is postponed until next mii-mon run. At the next round > because of the state change performed in the previous inspect-run, this > round does not detect any changes and would skip calling commit phase. > This would result in an inconsistent state until next link event happens > (if it ever happens). > > During the the commit phase, it's always assumed that speed and duplex > fetch is always successful, but that's always not the case. However the > slave state is marked UP irrespective of speed / duplex fetch operation. > If the speed / duplex fetch operation results in insane values for either > of these two fields, then keeping internal link state UP is not going to > provide fruitful results either. > > Please see into individual patches for more details. Looks good, series applied, thanks.