It could probably be MFCed if somebody could verify that it causes no harm in 11.

I have no way to test lagg/lacp on 11, so I did not mark it for MFC.

Drew

On 8/13/18 9:58 PM, Kubilay Kocak wrote:
On 14/08/2018 12:13 am, Andrew Gallatin wrote:
Author: gallatin
Date: Mon Aug 13 14:13:25 2018
New Revision: 337709
URL: 
https://urldefense.proofpoint.com/v2/url?u=https-3A__svnweb.freebsd.org_changeset_base_337709&d=DwICaQ&c=imBPVzF25OnBgGmVOlcsiEgHoG1i6YHLR0Sj_gZ4adc&r=Ed-falealxPeqc22ehgAUCLh8zlZbibZLSMWJeZro4A&m=1cWDZxkgrPXh1V368in81GXeCx7nVoSbXY9khM0W2r0&s=psymcTlMReu-E0h72SEySpgbsxzW7KxTwtQDKS8ocBY&e=

Log:
   lagg: allow lacp to manage the link state
Lacp needs to manage the link state itself. Unlike other
   lagg protocols, the ability of lacp to pass traffic
   depends not only on the lagg members having link, but also
   on the lacp protocol converging to a distributing state with the
   link partner.
If we prematurely mark the link as up, then we will send a
   gratuitous arp (via arp_handle_ifllchange()) before the lacp
   interface is capable of passing traffic. When this happens,
   the gratuitous arp is lost, and our link partner may cache
   a stale mac address (eg, when the base mac address for the
   lagg bundle changes, due to a BIOS change re-ordering NIC
   unit numbers)

Hi Andrew

Can this be MFC'd?

   Reviewed by: jtl, hselasky
   Sponsored by: Netflix

Modified:
   head/sys/net/ieee8023ad_lacp.c
   head/sys/net/if_lagg.c

Modified: head/sys/net/ieee8023ad_lacp.c
==============================================================================
--- head/sys/net/ieee8023ad_lacp.c      Mon Aug 13 13:58:45 2018        
(r337708)
+++ head/sys/net/ieee8023ad_lacp.c      Mon Aug 13 14:13:25 2018        
(r337709)
@@ -711,6 +711,8 @@ lacp_disable_distributing(struct lacp_port *lp)
        }
lp->lp_state &= ~LACP_STATE_DISTRIBUTING;
+       if_link_state_change(sc->sc_ifp,
+           sc->sc_active ? LINK_STATE_UP : LINK_STATE_DOWN);
  }
static void
@@ -745,6 +747,9 @@ lacp_enable_distributing(struct lacp_port *lp)
        } else
                /* try to become the active aggregator */
                lacp_select_active_aggregator(lsc);
+
+       if_link_state_change(sc->sc_ifp,
+           sc->sc_active ? LINK_STATE_UP : LINK_STATE_DOWN);
  }
static void

Modified: head/sys/net/if_lagg.c
==============================================================================
--- head/sys/net/if_lagg.c      Mon Aug 13 13:58:45 2018        (r337708)
+++ head/sys/net/if_lagg.c      Mon Aug 13 14:13:25 2018        (r337709)
@@ -1737,6 +1737,10 @@ lagg_linkstate(struct lagg_softc *sc)
LAGG_XLOCK_ASSERT(sc); + /* LACP handles link state itself */
+       if (sc->sc_proto == LAGG_PROTO_LACP)
+               return;
+
        /* Our link is considered up if at least one of our ports is active */
        LAGG_RLOCK();
        CK_SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) {
_______________________________________________
[email protected] mailing list
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freebsd.org_mailman_listinfo_svn-2Dsrc-2Dhead&d=DwICaQ&c=imBPVzF25OnBgGmVOlcsiEgHoG1i6YHLR0Sj_gZ4adc&r=Ed-falealxPeqc22ehgAUCLh8zlZbibZLSMWJeZro4A&m=1cWDZxkgrPXh1V368in81GXeCx7nVoSbXY9khM0W2r0&s=SLnmQNpAX0j6HgJ5_yIcrQJAf9xCWtNqoEJ2qbOy7_E&e=
To unsubscribe, send any mail to "[email protected]"


_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to