Date: Fri, 5 Feb 2016 05:18:21 +0000 From: Phabricator <phabric-noreply@FreeBSD.org> To: freebsd-net@freebsd.org Subject: [Differential] [Closed] D5104: hyperv/hn: Obey IFCAP_RXCSUM Message-ID: <c096b50a40499c6e120ba9aa3d7955b4@localhost.localdomain> In-Reply-To: <differential-rev-PHID-DREV-s6ltbwep4cplj2nfozb5-req@FreeBSD.org> References: <differential-rev-PHID-DREV-s6ltbwep4cplj2nfozb5-req@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--b1_c096b50a40499c6e120ba9aa3d7955b4 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit This revision was automatically updated to reflect the committed changes. Closed by commit rS295301: hyperv/hn: Obey IFCAP_RXCSUM configure (authored by sephe). CHANGED PRIOR TO COMMIT https://reviews.freebsd.org/D5104?vs=12783&id=13035#toc REPOSITORY rS FreeBSD src repository CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D5104?vs=12783&id=13035 REVISION DETAIL https://reviews.freebsd.org/D5104 AFFECTED FILES head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c CHANGE DETAILS diff --git a/head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c --- a/head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c +++ b/head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c @@ -1142,7 +1142,7 @@ struct mbuf *m_new; struct ifnet *ifp; device_t dev = device_ctx->device; - int size, do_lro = 0; + int size, do_lro = 0, do_csum = 1; if (sc == NULL) { return (0); /* TODO: KYS how can this be! */ @@ -1190,18 +1190,21 @@ } m_new->m_pkthdr.rcvif = ifp; + if (__predict_false((ifp->if_capenable & IFCAP_RXCSUM) == 0)) + do_csum = 0; + /* receive side checksum offload */ if (csum_info != NULL) { /* IP csum offload */ - if (csum_info->receive.ip_csum_succeeded) { + if (csum_info->receive.ip_csum_succeeded && do_csum) { m_new->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED | CSUM_IP_VALID); sc->hn_csum_ip++; } /* TCP/UDP csum offload */ - if (csum_info->receive.tcp_csum_succeeded || - csum_info->receive.udp_csum_succeeded) { + if ((csum_info->receive.tcp_csum_succeeded || + csum_info->receive.udp_csum_succeeded) && do_csum) { m_new->m_pkthdr.csum_flags |= (CSUM_DATA_VALID | CSUM_PSEUDO_HDR); m_new->m_pkthdr.csum_data = 0xffff; @@ -1239,7 +1242,8 @@ pr = hn_check_iplen(m_new, hoff); if (pr == IPPROTO_TCP) { - if (sc->hn_trust_hcsum & HN_TRUST_HCSUM_TCP) { + if (do_csum && + (sc->hn_trust_hcsum & HN_TRUST_HCSUM_TCP)) { sc->hn_csum_trusted++; m_new->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED | CSUM_IP_VALID | @@ -1249,14 +1253,15 @@ /* Rely on SW csum verification though... */ do_lro = 1; } else if (pr == IPPROTO_UDP) { - if (sc->hn_trust_hcsum & HN_TRUST_HCSUM_UDP) { + if (do_csum && + (sc->hn_trust_hcsum & HN_TRUST_HCSUM_UDP)) { sc->hn_csum_trusted++; m_new->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR); m_new->m_pkthdr.csum_data = 0xffff; } - } else if (pr != IPPROTO_DONE && + } else if (pr != IPPROTO_DONE && do_csum && (sc->hn_trust_hcsum & HN_TRUST_HCSUM_IP)) { sc->hn_csum_trusted++; m_new->m_pkthdr.csum_flags |= EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, adrian, network Cc: freebsd-net-list --b1_c096b50a40499c6e120ba9aa3d7955b4 Content-Type: text/x-patch; charset=utf-8; name="D5104.13035.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5104.13035.patch" ZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJl ZWJzZC5jIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKLS0tIGEvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKQEAgLTExNDIsNyArMTE0Miw3IEBACiAJc3RydWN0IG1idWYgKm1fbmV3OwogCXN0cnVjdCBp Zm5ldCAqaWZwOwogCWRldmljZV90IGRldiA9IGRldmljZV9jdHgtPmRldmljZTsKLQlpbnQgc2l6 ZSwgZG9fbHJvID0gMDsKKwlpbnQgc2l6ZSwgZG9fbHJvID0gMCwgZG9fY3N1bSA9IDE7CiAKIAlp ZiAoc2MgPT0gTlVMTCkgewogCQlyZXR1cm4gKDApOyAvKiBUT0RPOiBLWVMgaG93IGNhbiB0aGlz IGJlISAqLwpAQCAtMTE5MCwxOCArMTE5MCwyMSBAQAogCX0KIAltX25ldy0+bV9wa3RoZHIucmN2 aWYgPSBpZnA7CiAKKwlpZiAoX19wcmVkaWN0X2ZhbHNlKChpZnAtPmlmX2NhcGVuYWJsZSAmIElG Q0FQX1JYQ1NVTSkgPT0gMCkpCisJCWRvX2NzdW0gPSAwOworCiAJLyogcmVjZWl2ZSBzaWRlIGNo ZWNrc3VtIG9mZmxvYWQgKi8KIAlpZiAoY3N1bV9pbmZvICE9IE5VTEwpIHsKIAkJLyogSVAgY3N1 bSBvZmZsb2FkICovCi0JCWlmIChjc3VtX2luZm8tPnJlY2VpdmUuaXBfY3N1bV9zdWNjZWVkZWQp IHsKKwkJaWYgKGNzdW1faW5mby0+cmVjZWl2ZS5pcF9jc3VtX3N1Y2NlZWRlZCAmJiBkb19jc3Vt KSB7CiAJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQogCQkJICAgIChDU1VNX0lQX0NI RUNLRUQgfCBDU1VNX0lQX1ZBTElEKTsKIAkJCXNjLT5obl9jc3VtX2lwKys7CiAJCX0KIAogCQkv KiBUQ1AvVURQIGNzdW0gb2ZmbG9hZCAqLwotCQlpZiAoY3N1bV9pbmZvLT5yZWNlaXZlLnRjcF9j c3VtX3N1Y2NlZWRlZCB8fAotCQkgICAgY3N1bV9pbmZvLT5yZWNlaXZlLnVkcF9jc3VtX3N1Y2Nl ZWRlZCkgeworCQlpZiAoKGNzdW1faW5mby0+cmVjZWl2ZS50Y3BfY3N1bV9zdWNjZWVkZWQgfHwK KwkJICAgICBjc3VtX2luZm8tPnJlY2VpdmUudWRwX2NzdW1fc3VjY2VlZGVkKSAmJiBkb19jc3Vt KSB7CiAJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQogCQkJICAgIChDU1VNX0RBVEFf VkFMSUQgfCBDU1VNX1BTRVVET19IRFIpOwogCQkJbV9uZXctPm1fcGt0aGRyLmNzdW1fZGF0YSA9 IDB4ZmZmZjsKQEAgLTEyMzksNyArMTI0Miw4IEBACiAKIAkJCXByID0gaG5fY2hlY2tfaXBsZW4o bV9uZXcsIGhvZmYpOwogCQkJaWYgKHByID09IElQUFJPVE9fVENQKSB7Ci0JCQkJaWYgKHNjLT5o bl90cnVzdF9oY3N1bSAmIEhOX1RSVVNUX0hDU1VNX1RDUCkgeworCQkJCWlmIChkb19jc3VtICYm CisJCQkJICAgIChzYy0+aG5fdHJ1c3RfaGNzdW0gJiBITl9UUlVTVF9IQ1NVTV9UQ1ApKSB7CiAJ CQkJCXNjLT5obl9jc3VtX3RydXN0ZWQrKzsKIAkJCQkJbV9uZXctPm1fcGt0aGRyLmNzdW1fZmxh Z3MgfD0KIAkJCQkJICAgKENTVU1fSVBfQ0hFQ0tFRCB8IENTVU1fSVBfVkFMSUQgfApAQCAtMTI0 OSwxNCArMTI1MywxNSBAQAogCQkJCS8qIFJlbHkgb24gU1cgY3N1bSB2ZXJpZmljYXRpb24gdGhv dWdoLi4uICovCiAJCQkJZG9fbHJvID0gMTsKIAkJCX0gZWxzZSBpZiAocHIgPT0gSVBQUk9UT19V RFApIHsKLQkJCQlpZiAoc2MtPmhuX3RydXN0X2hjc3VtICYgSE5fVFJVU1RfSENTVU1fVURQKSB7 CisJCQkJaWYgKGRvX2NzdW0gJiYKKwkJCQkgICAgKHNjLT5obl90cnVzdF9oY3N1bSAmIEhOX1RS VVNUX0hDU1VNX1VEUCkpIHsKIAkJCQkJc2MtPmhuX2NzdW1fdHJ1c3RlZCsrOwogCQkJCQltX25l dy0+bV9wa3RoZHIuY3N1bV9mbGFncyB8PQogCQkJCQkgICAoQ1NVTV9JUF9DSEVDS0VEIHwgQ1NV TV9JUF9WQUxJRCB8CiAJCQkJCSAgICBDU1VNX0RBVEFfVkFMSUQgfCBDU1VNX1BTRVVET19IRFIp OwogCQkJCQltX25ldy0+bV9wa3RoZHIuY3N1bV9kYXRhID0gMHhmZmZmOwogCQkJCX0KLQkJCX0g ZWxzZSBpZiAocHIgIT0gSVBQUk9UT19ET05FICYmCisJCQl9IGVsc2UgaWYgKHByICE9IElQUFJP VE9fRE9ORSAmJiBkb19jc3VtICYmCiAJCQkgICAgKHNjLT5obl90cnVzdF9oY3N1bSAmIEhOX1RS VVNUX0hDU1VNX0lQKSkgewogCQkJCXNjLT5obl9jc3VtX3RydXN0ZWQrKzsKIAkJCQltX25ldy0+ bV9wa3RoZHIuY3N1bV9mbGFncyB8PQoK --b1_c096b50a40499c6e120ba9aa3d7955b4--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c096b50a40499c6e120ba9aa3d7955b4>