Skip site navigation (1)Skip section navigation (2)
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>