From: Ganesh Goudar <ganes...@chelsio.com> Date: Thu, 24 May 2018 19:33:37 +0530
> From: Arjun Vynipadath <ar...@chelsio.com> > > We have a confusion of two different abstractions in the Common > Code: Physical Link (Port) and Logical Network Interface (Virtual > Interface), and we haven't been properly managing the state of the > intersection of those two abstractions. > On the one hand we have the Physical state of the Link -- up or down -- > and on the other we have the logical state of the VI, enabled or not. > {ethN} refers to both the Physical and Logical State. In this case, > ifconfig only affects/interrogates the Logical State of a VI, > and ethtool only deals with the Physical State. And these are different. > > So, just because we disable the VI, we don't really want to change the > Physical Link Up/Down state. Thus, the previous hack to set > "lc->link_ok = 0" when we disable a VI is completely incorrect. > > Where we get into trouble is where the Physical Link State and the > Logical VI State cross swords. And that happens in > t4_handle_get_port_info() where we need to manage/safe the Physical > Link State, but we also need to know when the Logical VI State has > changed and pass that back up to the OS-dependent Driver routine > t4_os_link_changed() which is concerned about the Logical Interface. > > So we enable a VI and that causes Firmware to send us a new Port > Information message, but if none of the Physical Link State > particulars have changed, we don't call t4_os_link_changed(). > > This fix uses the existing OS Contract APIs for the Common Code to > inform the OS-dependent portion of the Host Driver when the "Link" (really > Logical Network Interface) is "up" or "down". A new API > t4_enable_pi_params() is added which calls t4_enable_vi_params() and, > if that is successful, then calls back to the OS Contract API > t4_os_link_changed() notifying the OS-dependent layer of the > potential Link State change. > > Original Work by : Casey Leedom <lee...@chelsio.com> > > Signed-off-by: Santosh Rastapur <sant...@chelsio.com> > Signed-off-by: Arjun Vynipadath <ar...@chelsio.com> > Signed-off-by: Ganesh Goudar <ganes...@chelsio.com> Applied, thanks.