From f54de229cf1ba7a65ad7d9338bea9760a80ffd35 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Wed, 15 Aug 2012 10:37:44 +0800 Subject: [PATCH] em: Change TXCSUM does not require reinitialize hardware --- sys/dev/netif/em/if_em.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/sys/dev/netif/em/if_em.c b/sys/dev/netif/em/if_em.c index f82e8b99e2..b4a344248d 100644 --- a/sys/dev/netif/em/if_em.c +++ b/sys/dev/netif/em/if_em.c @@ -1111,10 +1111,17 @@ em_ioctl(struct ifnet *ifp, u_long command, caddr_t data, struct ucred *cr) case SIOCSIFCAP: reinit = 0; mask = ifr->ifr_reqcap ^ ifp->if_capenable; - if (mask & IFCAP_HWCSUM) { - ifp->if_capenable ^= (mask & IFCAP_HWCSUM); + if (mask & IFCAP_RXCSUM) { + ifp->if_capenable ^= IFCAP_RXCSUM; reinit = 1; } + if (mask & IFCAP_TXCSUM) { + ifp->if_capenable ^= IFCAP_TXCSUM; + if (ifp->if_capenable & IFCAP_TXCSUM) + ifp->if_hwassist |= EM_CSUM_FEATURES; + else + ifp->if_hwassist &= ~EM_CSUM_FEATURES; + } if (mask & IFCAP_VLAN_HWTAGGING) { ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; reinit = 1; @@ -1292,12 +1299,6 @@ em_init(void *xsc) E1000_WRITE_REG(&adapter->hw, E1000_CTRL, ctrl); } - /* Set hardware offload abilities */ - if (ifp->if_capenable & IFCAP_TXCSUM) - ifp->if_hwassist = EM_CSUM_FEATURES; - else - ifp->if_hwassist = 0; - /* Configure for OS presence */ em_get_mgmt(adapter); -- 2.41.0