summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2008-12-16 22:16:34 +0000
committerthompsa <thompsa@FreeBSD.org>2008-12-16 22:16:34 +0000
commitaf3a8d21c87b424ba0e43fbcdc2e9229d5be3a89 (patch)
tree29e6a1fae8bb78db1c92ccd7825536fef30689cb /sys/net
parentb2515a861b17c67bef0ad8eb3e85cdaffe242388 (diff)
downloadFreeBSD-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')
-rw-r--r--sys/net/if_lagg.c7
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)
OpenPOWER on IntegriCloud