From owner-freebsd-net@freebsd.org Mon Feb 1 08:43:00 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 88B2CA9789E for ; Mon, 1 Feb 2016 08:43:00 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: from phabric-backend.rbsd.freebsd.org (unknown [IPv6:2607:fc50:2000:101::1bb:73]) by mx1.freebsd.org (Postfix) with ESMTP id 7611BA8D for ; Mon, 1 Feb 2016 08:43:00 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id 72FC9106B55; Mon, 1 Feb 2016 08:43:00 +0000 (UTC) Date: Mon, 1 Feb 2016 08:43:00 +0000 To: freebsd-net@freebsd.org From: "sepherosa_gmail.com (Sepherosa Ziehau)" Reply-to: D5159+325+0db17ec577dfe5ca@reviews.freebsd.org Subject: [Differential] [Request, 31 lines] D5159: hyperv/hn: Recover half of the chimney sending space Message-ID: X-Priority: 3 X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , Thread-Topic: D5159: hyperv/hn: Recover half of the chimney sending space X-Herald-Rules: none X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: Precedence: bulk Thread-Index: MzRmNWEyNTk4ODRlNWNkNGYzNTA2Yjk4Nzc1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_297ff6342ca4903e34619b9cb3aa961e" X-Mailman-Approved-At: Mon, 01 Feb 2016 12:11:03 +0000 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.20 List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Feb 2016 08:43:00 -0000 --b1_297ff6342ca4903e34619b9cb3aa961e Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit sepherosa_gmail.com created this revision. sepherosa_gmail.com added reviewers: network, adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com. sepherosa_gmail.com added a subscriber: freebsd-net-list. REVISION SUMMARY Due to the miss use of ffs, where ffsl should be used. And use system atomic operation instead. While I'm here, strigent chimney sending index assertion. REVISION DETAIL https://reviews.freebsd.org/D5159 AFFECTED FILES sys/dev/hyperv/netvsc/hv_net_vsc.c CHANGE DETAILS diff --git a/sys/dev/hyperv/netvsc/hv_net_vsc.c b/sys/dev/hyperv/netvsc/hv_net_vsc.c --- a/sys/dev/hyperv/netvsc/hv_net_vsc.c +++ b/sys/dev/hyperv/netvsc/hv_net_vsc.c @@ -136,15 +136,15 @@ int i; for (i = 0; i < bitsmap_words; i++) { - idx = ffs(~bitsmap[i]); + idx = ffsl(~bitsmap[i]); if (0 == idx) continue; idx--; - if (i * BITS_PER_LONG + idx >= net_dev->send_section_count) - return (ret); + KASSERT(i * BITS_PER_LONG + idx < net_dev->send_section_count, + ("invalid i %d and idx %lu", i, idx)); - if (synch_test_and_set_bit(idx, &bitsmap[i])) + if (atomic_testandset_long(&bitsmap[i], idx)) continue; ret = i * BITS_PER_LONG + idx; @@ -789,8 +789,27 @@ if (NULL != net_vsc_pkt) { if (net_vsc_pkt->send_buf_section_idx != NVSP_1_CHIMNEY_SEND_INVALID_SECTION_INDEX) { - synch_change_bit(net_vsc_pkt->send_buf_section_idx, - net_dev->send_section_bitsmap); + u_long mask; + int idx; + + idx = net_vsc_pkt->send_buf_section_idx / + BITS_PER_LONG; + KASSERT(idx < net_dev->bitsmap_words, + ("invalid section index %u", + net_vsc_pkt->send_buf_section_idx)); + mask = 1UL << + (net_vsc_pkt->send_buf_section_idx % + BITS_PER_LONG); + + KASSERT(net_dev->send_section_bitsmap[idx] & + mask, + ("index bitmap 0x%lx, section index %u, " + "bitmap idx %d, bitmask 0x%lx", + net_dev->send_section_bitsmap[idx], + net_vsc_pkt->send_buf_section_idx, + idx, mask)); + atomic_clear_long( + &net_dev->send_section_bitsmap[idx], mask); } /* Notify the layer above us */ EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, network, adrian, delphij, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com Cc: freebsd-net-list --b1_297ff6342ca4903e34619b9cb3aa961e Content-Type: text/x-patch; charset=utf-8; name="D5159.12926.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D5159.12926.patch" ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmMgYi9zeXMvZGV2 L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5jCi0tLSBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9o dl9uZXRfdnNjLmMKKysrIGIvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldF92c2MuYwpAQCAt MTM2LDE1ICsxMzYsMTUgQEAKIAlpbnQgaTsKIAogCWZvciAoaSA9IDA7IGkgPCBiaXRzbWFwX3dv cmRzOyBpKyspIHsKLQkJaWR4ID0gZmZzKH5iaXRzbWFwW2ldKTsKKwkJaWR4ID0gZmZzbCh+Yml0 c21hcFtpXSk7CiAJCWlmICgwID09IGlkeCkKIAkJCWNvbnRpbnVlOwogCiAJCWlkeC0tOwotCQlp ZiAoaSAqIEJJVFNfUEVSX0xPTkcgKyBpZHggPj0gbmV0X2Rldi0+c2VuZF9zZWN0aW9uX2NvdW50 KQotCQkJcmV0dXJuIChyZXQpOworCQlLQVNTRVJUKGkgKiBCSVRTX1BFUl9MT05HICsgaWR4IDwg bmV0X2Rldi0+c2VuZF9zZWN0aW9uX2NvdW50LAorCQkgICAgKCJpbnZhbGlkIGkgJWQgYW5kIGlk eCAlbHUiLCBpLCBpZHgpKTsKIAotCQlpZiAoc3luY2hfdGVzdF9hbmRfc2V0X2JpdChpZHgsICZi aXRzbWFwW2ldKSkKKwkJaWYgKGF0b21pY190ZXN0YW5kc2V0X2xvbmcoJmJpdHNtYXBbaV0sIGlk eCkpCiAJCQljb250aW51ZTsKIAogCQlyZXQgPSBpICogQklUU19QRVJfTE9ORyArIGlkeDsKQEAg LTc4OSw4ICs3ODksMjcgQEAKIAkJaWYgKE5VTEwgIT0gbmV0X3ZzY19wa3QpIHsKIAkJCWlmIChu ZXRfdnNjX3BrdC0+c2VuZF9idWZfc2VjdGlvbl9pZHggIT0KIAkJCSAgICBOVlNQXzFfQ0hJTU5F WV9TRU5EX0lOVkFMSURfU0VDVElPTl9JTkRFWCkgewotCQkJCXN5bmNoX2NoYW5nZV9iaXQobmV0 X3ZzY19wa3QtPnNlbmRfYnVmX3NlY3Rpb25faWR4LAotCQkJCSAgICBuZXRfZGV2LT5zZW5kX3Nl Y3Rpb25fYml0c21hcCk7CisJCQkJdV9sb25nIG1hc2s7CisJCQkJaW50IGlkeDsKKworCQkJCWlk eCA9IG5ldF92c2NfcGt0LT5zZW5kX2J1Zl9zZWN0aW9uX2lkeCAvCisJCQkJICAgIEJJVFNfUEVS X0xPTkc7CisJCQkJS0FTU0VSVChpZHggPCBuZXRfZGV2LT5iaXRzbWFwX3dvcmRzLAorCQkJCSAg ICAoImludmFsaWQgc2VjdGlvbiBpbmRleCAldSIsCisJCQkJICAgICBuZXRfdnNjX3BrdC0+c2Vu ZF9idWZfc2VjdGlvbl9pZHgpKTsKKwkJCQltYXNrID0gMVVMIDw8CisJCQkJICAgIChuZXRfdnNj X3BrdC0+c2VuZF9idWZfc2VjdGlvbl9pZHggJQorCQkJCSAgICAgQklUU19QRVJfTE9ORyk7CisK KwkJCQlLQVNTRVJUKG5ldF9kZXYtPnNlbmRfc2VjdGlvbl9iaXRzbWFwW2lkeF0gJgorCQkJCSAg ICBtYXNrLAorCQkJCSAgICAoImluZGV4IGJpdG1hcCAweCVseCwgc2VjdGlvbiBpbmRleCAldSwg IgorCQkJCSAgICAgImJpdG1hcCBpZHggJWQsIGJpdG1hc2sgMHglbHgiLAorCQkJCSAgICAgbmV0 X2Rldi0+c2VuZF9zZWN0aW9uX2JpdHNtYXBbaWR4XSwKKwkJCQkgICAgIG5ldF92c2NfcGt0LT5z ZW5kX2J1Zl9zZWN0aW9uX2lkeCwKKwkJCQkgICAgIGlkeCwgbWFzaykpOworCQkJCWF0b21pY19j bGVhcl9sb25nKAorCQkJCSAgICAmbmV0X2Rldi0+c2VuZF9zZWN0aW9uX2JpdHNtYXBbaWR4XSwg bWFzayk7CiAJCQl9CiAJCQkKIAkJCS8qIE5vdGlmeSB0aGUgbGF5ZXIgYWJvdmUgdXMgKi8KCg== --b1_297ff6342ca4903e34619b9cb3aa961e--