Module Name: src Committed By: rin Date: Wed Jan 30 11:11:45 UTC 2019
Modified Files: src/sys/dev/usb: if_mue.c Log Message: Fix mue_sethwcsum(): - Check appropriate flags to enable RX checksum offloading. - We don't support ICMP/IGMP checksum offloading. Tested both on LAN7800 and 7500. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/sys/dev/usb/if_mue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/if_mue.c diff -u src/sys/dev/usb/if_mue.c:1.28 src/sys/dev/usb/if_mue.c:1.29 --- src/sys/dev/usb/if_mue.c:1.28 Tue Jan 22 03:42:28 2019 +++ src/sys/dev/usb/if_mue.c Wed Jan 30 11:11:45 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_mue.c,v 1.28 2019/01/22 03:42:28 msaitoh Exp $ */ +/* $NetBSD: if_mue.c,v 1.29 2019/01/30 11:11:45 rin Exp $ */ /* $OpenBSD: if_mue.c,v 1.3 2018/08/04 16:42:46 jsg Exp $ */ /* @@ -20,7 +20,7 @@ /* Driver for Microchip LAN7500/LAN7800 chipsets. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_mue.c,v 1.28 2019/01/22 03:42:28 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_mue.c,v 1.29 2019/01/30 11:11:45 rin Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -1402,17 +1402,23 @@ mue_sethwcsum(struct mue_softc *sc) reg = (sc->mue_flags & LAN7500) ? MUE_7500_RFE_CTL : MUE_7800_RFE_CTL; val = mue_csr_read(sc, reg); - if (ifp->if_capenable & (IFCAP_CSUM_TCPv4_Rx|IFCAP_CSUM_UDPv4_Rx)) { - DPRINTF(sc, "enabled\n"); - val |= MUE_RFE_CTL_IGMP_COE | MUE_RFE_CTL_ICMP_COE; - val |= MUE_RFE_CTL_TCPUDP_COE | MUE_RFE_CTL_IP_COE; + if (ifp->if_capenable & IFCAP_CSUM_IPv4_Rx) { + DPRINTF(sc, "RX IPv4 hwcsum enabled\n"); + val |= MUE_RFE_CTL_IP_COE; } else { - DPRINTF(sc, "disabled\n"); - val &= - ~(MUE_RFE_CTL_IGMP_COE | MUE_RFE_CTL_ICMP_COE); - val &= - ~(MUE_RFE_CTL_TCPUDP_COE | MUE_RFE_CTL_IP_COE); - } + DPRINTF(sc, "RX IPv4 hwcsum disabled\n"); + val &= ~MUE_RFE_CTL_IP_COE; + } + + if (ifp->if_capenable & + (IFCAP_CSUM_TCPv4_Rx | IFCAP_CSUM_UDPv4_Rx | + IFCAP_CSUM_TCPv6_Rx | IFCAP_CSUM_UDPv6_Rx)) { + DPRINTF(sc, "RX L4 hwcsum enabled\n"); + val |= MUE_RFE_CTL_TCPUDP_COE; + } else { + DPRINTF(sc, "RX L4 hwcsum disabled\n"); + val &= ~MUE_RFE_CTL_TCPUDP_COE; + } val &= ~MUE_RFE_CTL_VLAN_FILTER;