diff options
author | thompsa <thompsa@FreeBSD.org> | 2008-12-16 22:16:34 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2008-12-16 22:16:34 +0000 |
commit | af3a8d21c87b424ba0e43fbcdc2e9229d5be3a89 (patch) | |
tree | 29e6a1fae8bb78db1c92ccd7825536fef30689cb /sys/net/if_lagg.c | |
parent | b2515a861b17c67bef0ad8eb3e85cdaffe242388 (diff) | |
download | FreeBSD-src-af3a8d21c87b424ba0e43fbcdc2e9229d5be3a89.zip FreeBSD-src-af3a8d21c87b424ba0e43fbcdc2e9229d5be3a89.tar.gz |
Also propagate the if_hwassist value to the parent so that cksum offload works.
Submitted by: Tom Hicks (thicks_averesys.com)
Diffstat (limited to 'sys/net/if_lagg.c')
-rw-r--r-- | sys/net/if_lagg.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index be6e0b8..06543bb 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -310,6 +310,7 @@ lagg_capabilities(struct lagg_softc *sc) { struct lagg_port *lp; int cap = ~0, ena = ~0; + u_long hwa = ~0UL; LAGG_WLOCK_ASSERT(sc); @@ -317,14 +318,18 @@ lagg_capabilities(struct lagg_softc *sc) SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { cap &= lp->lp_ifp->if_capabilities; ena &= lp->lp_ifp->if_capenable; + hwa &= lp->lp_ifp->if_hwassist; } cap = (cap == ~0 ? 0 : cap); ena = (ena == ~0 ? 0 : ena); + hwa = (hwa == ~0 ? 0 : hwa); if (sc->sc_ifp->if_capabilities != cap || - sc->sc_ifp->if_capenable != ena) { + sc->sc_ifp->if_capenable != ena || + sc->sc_ifp->if_hwassist != hwa) { sc->sc_ifp->if_capabilities = cap; sc->sc_ifp->if_capenable = ena; + sc->sc_ifp->if_hwassist = hwa; getmicrotime(&sc->sc_ifp->if_lastchange); if (sc->sc_ifflags & IFF_DEBUG) |