From owner-freebsd-net@freebsd.org Mon Jan 25 05:12:19 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 4F365A31FA2 for ; Mon, 25 Jan 2016 05:12:19 +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 3A56A1743 for ; Mon, 25 Jan 2016 05:12:19 +0000 (UTC) (envelope-from daemon-user@freebsd.org) Received: by phabric-backend.rbsd.freebsd.org (Postfix, from userid 1346) id 38C81116BB; Mon, 25 Jan 2016 05:12:19 +0000 (UTC) Date: Mon, 25 Jan 2016 05:12:19 +0000 To: freebsd-net@freebsd.org From: Phabricator Reply-to: D4977+325+02999679bd9ee421@reviews.freebsd.org Subject: [Differential] [Closed] D4977: hyperv/hn: Use m_copydata for chimney sending. Message-ID: <7eac4ee6ca5161c925637e8f180bca42@localhost.localdomain> 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: D4977: hyperv/hn: Use m_copydata for chimney sending. 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 In-Reply-To: References: Thread-Index: OGYzNjQ1MzA3NTJkZTNiZDY5Y2E2NDE5N2EyIFalrrM= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_7eac4ee6ca5161c925637e8f180bca42" 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, 25 Jan 2016 05:12:19 -0000 --b1_7eac4ee6ca5161c925637e8f180bca42 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit This revision was automatically updated to reflect the committed changes. Closed by commit rS294701: hyperv/hn: Use m_copydata for chimney sending. (authored by sephe). CHANGED PRIOR TO COMMIT https://reviews.freebsd.org/D4977?vs=12412&id=12669#toc REPOSITORY rS FreeBSD src repository CHANGES SINCE LAST UPDATE https://reviews.freebsd.org/D4977?vs=12412&id=12669 REVISION DETAIL https://reviews.freebsd.org/D4977 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 @@ -756,7 +756,6 @@ struct hv_device *device_ctx = vmbus_get_devctx(sc->hn_dev); netvsc_dev *net_dev = sc->net_dev; netvsc_packet *packet; - struct mbuf *m_head, *m; struct ether_vlan_header *eh; rndis_msg *rndis_mesg; rndis_packet *rndis_pkt; @@ -767,8 +766,6 @@ int ether_len; uint32_t rndis_msg_size = 0; uint32_t trans_proto_type; - uint32_t send_buf_section_idx = - NVSP_1_CHIMNEY_SEND_INVALID_SECTION_INDEX; if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) != IFF_DRV_RUNNING) @@ -778,6 +775,7 @@ bus_dma_segment_t segs[HN_TX_DATA_SEGCNT_MAX]; int error, nsegs, i, send_failed = 0; struct hn_txdesc *txd; + struct mbuf *m_head; IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) @@ -940,24 +938,21 @@ /* send packet with send buffer */ if (packet->tot_data_buf_len < sc->hn_tx_chimney_size) { + uint32_t send_buf_section_idx; + send_buf_section_idx = hv_nv_get_next_send_section(net_dev); if (send_buf_section_idx != NVSP_1_CHIMNEY_SEND_INVALID_SECTION_INDEX) { - char *dest = ((char *)net_dev->send_buf + - send_buf_section_idx * - net_dev->send_section_size); + uint8_t *dest = ((uint8_t *)net_dev->send_buf + + (send_buf_section_idx * + net_dev->send_section_size)); memcpy(dest, rndis_mesg, rndis_msg_size); dest += rndis_msg_size; - for (m = m_head; m != NULL; m = m->m_next) { - if (m->m_len) { - memcpy(dest, - (void *)mtod(m, vm_offset_t), - m->m_len); - dest += m->m_len; - } - } + + m_copydata(m_head, 0, m_head->m_pkthdr.len, + dest); packet->send_buf_section_idx = send_buf_section_idx; EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: sepherosa_gmail.com, royger, decui_microsoft.com, honzhan_microsoft.com, howard0su_gmail.com, delphij, adrian, network Cc: freebsd-net-list --b1_7eac4ee6ca5161c925637e8f180bca42 Content-Type: text/x-patch; charset=utf-8; name="D4977.12669.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D4977.12669.patch" ZGlmZiAtLWdpdCBhL2hlYWQvc3lzL2Rldi9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJl ZWJzZC5jIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKLS0tIGEvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKKysrIGIvaGVhZC9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNk LmMKQEAgLTc1Niw3ICs3NTYsNiBAQAogCXN0cnVjdCBodl9kZXZpY2UgKmRldmljZV9jdHggPSB2 bWJ1c19nZXRfZGV2Y3R4KHNjLT5obl9kZXYpOwogCW5ldHZzY19kZXYgKm5ldF9kZXYgPSBzYy0+ bmV0X2RldjsKIAluZXR2c2NfcGFja2V0ICpwYWNrZXQ7Ci0Jc3RydWN0IG1idWYgKm1faGVhZCwg Km07CiAJc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVyICplaDsKIAlybmRpc19tc2cgKnJuZGlzX21l c2c7CiAJcm5kaXNfcGFja2V0ICpybmRpc19wa3Q7CkBAIC03NjcsOCArNzY2LDYgQEAKIAlpbnQg ZXRoZXJfbGVuOwogCXVpbnQzMl90IHJuZGlzX21zZ19zaXplID0gMDsKIAl1aW50MzJfdCB0cmFu c19wcm90b190eXBlOwotCXVpbnQzMl90IHNlbmRfYnVmX3NlY3Rpb25faWR4ID0KLQkgICAgTlZT UF8xX0NISU1ORVlfU0VORF9JTlZBTElEX1NFQ1RJT05fSU5ERVg7CiAKIAlpZiAoKGlmcC0+aWZf ZHJ2X2ZsYWdzICYgKElGRl9EUlZfUlVOTklORyB8IElGRl9EUlZfT0FDVElWRSkpICE9CiAJICAg IElGRl9EUlZfUlVOTklORykKQEAgLTc3OCw2ICs3NzUsNyBAQAogCQlidXNfZG1hX3NlZ21lbnRf dCBzZWdzW0hOX1RYX0RBVEFfU0VHQ05UX01BWF07CiAJCWludCBlcnJvciwgbnNlZ3MsIGksIHNl bmRfZmFpbGVkID0gMDsKIAkJc3RydWN0IGhuX3R4ZGVzYyAqdHhkOworCQlzdHJ1Y3QgbWJ1ZiAq bV9oZWFkOwogCiAJCUlGUV9EUlZfREVRVUVVRSgmaWZwLT5pZl9zbmQsIG1faGVhZCk7CiAJCWlm IChtX2hlYWQgPT0gTlVMTCkKQEAgLTk0MCwyNCArOTM4LDIxIEBACiAKIAkJLyogc2VuZCBwYWNr ZXQgd2l0aCBzZW5kIGJ1ZmZlciAqLwogCQlpZiAocGFja2V0LT50b3RfZGF0YV9idWZfbGVuIDwg c2MtPmhuX3R4X2NoaW1uZXlfc2l6ZSkgeworCQkJdWludDMyX3Qgc2VuZF9idWZfc2VjdGlvbl9p ZHg7CisKIAkJCXNlbmRfYnVmX3NlY3Rpb25faWR4ID0KIAkJCSAgICBodl9udl9nZXRfbmV4dF9z ZW5kX3NlY3Rpb24obmV0X2Rldik7CiAJCQlpZiAoc2VuZF9idWZfc2VjdGlvbl9pZHggIT0KIAkJ CSAgICBOVlNQXzFfQ0hJTU5FWV9TRU5EX0lOVkFMSURfU0VDVElPTl9JTkRFWCkgewotCQkJCWNo YXIgKmRlc3QgPSAoKGNoYXIgKiluZXRfZGV2LT5zZW5kX2J1ZiArCi0JCQkJICAgIHNlbmRfYnVm X3NlY3Rpb25faWR4ICoKLQkJCQkgICAgbmV0X2Rldi0+c2VuZF9zZWN0aW9uX3NpemUpOworCQkJ CXVpbnQ4X3QgKmRlc3QgPSAoKHVpbnQ4X3QgKiluZXRfZGV2LT5zZW5kX2J1ZiArCisJCQkJICAg IChzZW5kX2J1Zl9zZWN0aW9uX2lkeCAqCisJCQkJICAgICBuZXRfZGV2LT5zZW5kX3NlY3Rpb25f c2l6ZSkpOwogCiAJCQkJbWVtY3B5KGRlc3QsIHJuZGlzX21lc2csIHJuZGlzX21zZ19zaXplKTsK IAkJCQlkZXN0ICs9IHJuZGlzX21zZ19zaXplOwotCQkJCWZvciAobSA9IG1faGVhZDsgbSAhPSBO VUxMOyBtID0gbS0+bV9uZXh0KSB7Ci0JCQkJCWlmIChtLT5tX2xlbikgewotCQkJCQkJbWVtY3B5 KGRlc3QsCi0JCQkJCQkgICAgKHZvaWQgKiltdG9kKG0sIHZtX29mZnNldF90KSwKLQkJCQkJCSAg ICBtLT5tX2xlbik7Ci0JCQkJCQlkZXN0ICs9IG0tPm1fbGVuOwotCQkJCQl9Ci0JCQkJfQorCisJ CQkJbV9jb3B5ZGF0YShtX2hlYWQsIDAsIG1faGVhZC0+bV9wa3RoZHIubGVuLAorCQkJCSAgICBk ZXN0KTsKIAogCQkJCXBhY2tldC0+c2VuZF9idWZfc2VjdGlvbl9pZHggPQogCQkJCSAgICBzZW5k X2J1Zl9zZWN0aW9uX2lkeDsKCg== --b1_7eac4ee6ca5161c925637e8f180bca42--