diff --git a/sys/net/ieee8023ad_lacp.c b/sys/net/ieee8023ad_lacp.c index bd44e234c2b..2284ce2486e 100644 --- a/sys/net/ieee8023ad_lacp.c +++ b/sys/net/ieee8023ad_lacp.c @@ -812,7 +812,10 @@ lacp_select_tx_port(struct lagg_softc *sc, struct mbuf *m) return (NULL); } - hash = lagg_hashmbuf(m, lsc->lsc_hashkey); + if (m->m_flags & M_FLOWID) + hash = m->m_pkthdr.flowid; + else + hash = lagg_hashmbuf(m, lsc->lsc_hashkey); hash %= pm->pm_count; lp = pm->pm_map[hash]; diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 0479b90fcf9..583cc4135ad 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -1604,7 +1604,10 @@ lagg_lb_start(struct lagg_softc *sc, struct mbuf *m) struct lagg_port *lp = NULL; uint32_t p = 0; - p = lagg_hashmbuf(m, lb->lb_key); + if (m->m_flags & M_FLOWID) + p = m->m_pkthdr.flowid; + else + p = lagg_hashmbuf(m, lb->lb_key); p %= sc->sc_count; lp = lb->lb_ports[p];