Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 14 Jul 2014 12:18:24 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 191786] bce link state changes to same state are ignored by lagg
Message-ID:  <bug-191786-8-hZTsZgY2pO@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-191786-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-191786-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191786

vegeta@tuxpowered.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vegeta@tuxpowered.net

--- Comment #2 from vegeta@tuxpowered.net ---
Comment on attachment 144650
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=144650
Check for proper phy messages, never check phy status in bce_tick()

I've checked what Linux bce driver does and what the NIC really sends. This
patch changes the following things:

- Remove handling of PHY state from bce_tick() as this function might catch
some not fully "stable" state changes (like IFM_ETHER|IFM_NONE) and set
interface up before link reaches full link state
(IFM_ETHER|IFM_FDX|IFM_1000_T|rxpause|txpause) making the link unusable for
lagg.

- sc->status_block->status_attn_bits(_ack) are not really link status. Those
bits can change from down to up and then from down to up again without going
from up to down. Call if_link_state_change() only on changes of sc->bce_link_up
which is set only via bce_ifmedia_sts_rphy().

- Distinguish between STATUS_ATTN_BITS_LINK_STATE and
STATUS_ATTN_BITS_TIMER_ABORT. Timer abort messages are in fact sent even if
only link state is subscribed for. The old code would then put the link up with
IFM_ETHER|IFM_NONE state making the link unusable in lagg.

- Sent bce_pulse when on STATUS_ATTN_BITS_TIMER_ABORT with event_code ==
BCE_FW_EVT_CODE_SW_TIMER_EXPIRE_EVENT and also on normal remote PHY events.
Without this a message "Warning: bootcode thinks driver is absent." was seen on
system boot.

-- 
You are receiving this mail because:
You are the assignee for the bug.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-191786-8-hZTsZgY2pO>