XOR pt. 2
Don Lewis
truckman at FreeBSD.org
Fri Dec 11 21:19:33 UTC 2015
On 11 Dec, Michael McConville wrote:
> Note that IFCAP_HWCSUM has two bits set. Because of this, it doesn't XOR
> cleanly in the current if-else condition, but I'm not sure whether that
> was intended. I just wanted to pass this by people in case it was a
> logical bug.
Yeah, the original code looks incorrect. If HWCSUM is totally disabled
and the user requests RXCSUM, then the current code will enable both
RXCSUM and TXCSUM.
> --- dev/ixgb/if_ixgb.c.orig
> +++ dev/ixgb/if_ixgb.c
> @@ -599,10 +599,7 @@ ixgb_ioctl(struct ifnet * ifp, IOCTL_CMD
> }
> #endif /* DEVICE_POLLING */
> if (mask & IFCAP_HWCSUM) {
> - if (IFCAP_HWCSUM & ifp->if_capenable)
> - ifp->if_capenable &= ~IFCAP_HWCSUM;
> - else
> - ifp->if_capenable |= IFCAP_HWCSUM;
> + ifp->if_capenable ^= IFCAP_HWCSUM;
I think that would need to be:
ifp->if_capenable ^= (mask & IFCAP_HWCSUM);
> if (ifp->if_drv_flags & IFF_DRV_RUNNING)
> ixgb_init(adapter);
> }
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
More information about the freebsd-current
mailing list