https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=205264
Don Lewis <truck...@freebsd.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |truck...@freebsd.org --- Comment #1 from Don Lewis <truck...@freebsd.org> --- IFCAP_HWCSUM is defined as (IFCAP_RXCSUM | IFCAP_TXCSUM), so this code: case SIOCSIFCAP: IOCTL_DEBUGOUT("ioctl rcv'd: SIOCSIFCAP (Set Capabilities)"); mask = ifr->ifr_reqcap ^ ifp->if_capenable; [snip] if (mask & IFCAP_HWCSUM) { if (IFCAP_HWCSUM & ifp->if_capenable) ifp->if_capenable &= ~IFCAP_HWCSUM; else ifp->if_capenable |= IFCAP_HWCSUM; if (ifp->if_drv_flags & IFF_DRV_RUNNING) ixgb_init(adapter); } will set both bits even if the request only specifies one bit, and it will clear both bits even if the request only wants to clear one bit. Replacing the inner if/else block with this should fix the problem: ifp->if_capenable ^= (mask & IFCAP_HWCSUM); or alternatively: ifp->if_capenable = (ifr->ifr_reqcap & IFCAP_HWCSUM) | (ifp->if_capenable & ~IFCAP_HWCSUM); -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-net@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"