Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Feb 2016 16:02:59 +0000
From:      "sepherosa_gmail.com (Sepherosa Ziehau)" <phabric-noreply@FreeBSD.org>
To:        freebsd-net@freebsd.org
Subject:   [Differential] [Request, 19 lines] D5175: hyperv/hn: Add an option to always do transmission scheduling
Message-ID:  <differential-rev-PHID-DREV-aawldvhjtuqx45nsi7bx-req@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--b1_19267c547ac6fd0909d37cf4c2a7da02
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 subscribers: freebsd-net-list, freebsd-virtualization-list.

REVISION SUMMARY
  It is off by default.  This eases more experiment on hn(4).

REVISION DETAIL
  https://reviews.freebsd.org/D5175

AFFECTED FILES
  sys/dev/hyperv/netvsc/hv_net_vsc.h
  sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c

CHANGE DETAILS
  diff --git a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  --- a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  +++ b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  @@ -534,6 +534,10 @@
   	SYSCTL_ADD_INT(ctx, child, OID_AUTO, "direct_tx_size",
   	    CTLFLAG_RW, &sc->hn_direct_tx_size, 0,
   	    "Size of the packet for direct transmission");
  +	SYSCTL_ADD_INT(ctx, child, OID_AUTO, "sched_tx",
  +	    CTLFLAG_RW, &sc->hn_sched_tx, 0,
  +	    "Always schedule transmission "
  +	    "instead of doing direct transmission");
   
   	if (unit == 0) {
   		struct sysctl_ctx_list *dc_ctx;
  @@ -1602,26 +1606,31 @@
   static void
   hn_start(struct ifnet *ifp)
   {
  -	hn_softc_t *sc;
  +	struct hn_softc *sc = ifp->if_softc;
  +
  +	if (sc->hn_sched_tx)
  +		goto do_sched;
   
  -	sc = ifp->if_softc;
   	if (NV_TRYLOCK(sc)) {
   		int sched;
   
   		sched = hn_start_locked(ifp, sc->hn_direct_tx_size);
   		NV_UNLOCK(sc);
   		if (!sched)
   			return;
   	}
  +do_sched:
   	taskqueue_enqueue_fast(sc->hn_tx_taskq, &sc->hn_start_task);
   }
   
   static void
   hn_start_txeof(struct ifnet *ifp)
   {
  -	hn_softc_t *sc;
  +	struct hn_softc *sc = ifp->if_softc;
  +
  +	if (sc->hn_sched_tx)
  +		goto do_sched;
   
  -	sc = ifp->if_softc;
   	if (NV_TRYLOCK(sc)) {
   		int sched;
   
  @@ -1633,6 +1642,7 @@
   			    &sc->hn_start_task);
   		}
   	} else {
  +do_sched:
   		/*
   		 * Release the OACTIVE earlier, with the hope, that
   		 * others could catch up.  The task will clear the
  diff --git a/sys/dev/hyperv/netvsc/hv_net_vsc.h b/sys/dev/hyperv/netvsc/hv_net_vsc.h
  --- a/sys/dev/hyperv/netvsc/hv_net_vsc.h
  +++ b/sys/dev/hyperv/netvsc/hv_net_vsc.h
  @@ -1023,6 +1023,7 @@
   	int		hn_txdesc_avail;
   	int		hn_txeof;
   
  +	int		hn_sched_tx;
   	int		hn_direct_tx_size;
   	struct taskqueue *hn_tx_taskq;
   	struct task	hn_start_task;

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-virtualization-list, freebsd-net-list

--b1_19267c547ac6fd0909d37cf4c2a7da02
Content-Type: text/x-patch; charset=utf-8; name="D5175.12968.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="D5175.12968.patch"

ZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2Qu
YyBiL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9uZXR2c2NfZHJ2X2ZyZWVic2QuYwotLS0gYS9z
eXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0dnNjX2Rydl9mcmVlYnNkLmMKKysrIGIvc3lzL2Rl
di9oeXBlcnYvbmV0dnNjL2h2X25ldHZzY19kcnZfZnJlZWJzZC5jCkBAIC01MzQsNiArNTM0LDEw
IEBACiAJU1lTQ1RMX0FERF9JTlQoY3R4LCBjaGlsZCwgT0lEX0FVVE8sICJkaXJlY3RfdHhfc2l6
ZSIsCiAJICAgIENUTEZMQUdfUlcsICZzYy0+aG5fZGlyZWN0X3R4X3NpemUsIDAsCiAJICAgICJT
aXplIG9mIHRoZSBwYWNrZXQgZm9yIGRpcmVjdCB0cmFuc21pc3Npb24iKTsKKwlTWVNDVExfQURE
X0lOVChjdHgsIGNoaWxkLCBPSURfQVVUTywgInNjaGVkX3R4IiwKKwkgICAgQ1RMRkxBR19SVywg
JnNjLT5obl9zY2hlZF90eCwgMCwKKwkgICAgIkFsd2F5cyBzY2hlZHVsZSB0cmFuc21pc3Npb24g
IgorCSAgICAiaW5zdGVhZCBvZiBkb2luZyBkaXJlY3QgdHJhbnNtaXNzaW9uIik7CiAKIAlpZiAo
dW5pdCA9PSAwKSB7CiAJCXN0cnVjdCBzeXNjdGxfY3R4X2xpc3QgKmRjX2N0eDsKQEAgLTE2MDIs
MjYgKzE2MDYsMzEgQEAKIHN0YXRpYyB2b2lkCiBobl9zdGFydChzdHJ1Y3QgaWZuZXQgKmlmcCkK
IHsKLQlobl9zb2Z0Y190ICpzYzsKKwlzdHJ1Y3QgaG5fc29mdGMgKnNjID0gaWZwLT5pZl9zb2Z0
YzsKKworCWlmIChzYy0+aG5fc2NoZWRfdHgpCisJCWdvdG8gZG9fc2NoZWQ7CiAKLQlzYyA9IGlm
cC0+aWZfc29mdGM7CiAJaWYgKE5WX1RSWUxPQ0soc2MpKSB7CiAJCWludCBzY2hlZDsKIAogCQlz
Y2hlZCA9IGhuX3N0YXJ0X2xvY2tlZChpZnAsIHNjLT5obl9kaXJlY3RfdHhfc2l6ZSk7CiAJCU5W
X1VOTE9DSyhzYyk7CiAJCWlmICghc2NoZWQpCiAJCQlyZXR1cm47CiAJfQorZG9fc2NoZWQ6CiAJ
dGFza3F1ZXVlX2VucXVldWVfZmFzdChzYy0+aG5fdHhfdGFza3EsICZzYy0+aG5fc3RhcnRfdGFz
ayk7CiB9CiAKIHN0YXRpYyB2b2lkCiBobl9zdGFydF90eGVvZihzdHJ1Y3QgaWZuZXQgKmlmcCkK
IHsKLQlobl9zb2Z0Y190ICpzYzsKKwlzdHJ1Y3QgaG5fc29mdGMgKnNjID0gaWZwLT5pZl9zb2Z0
YzsKKworCWlmIChzYy0+aG5fc2NoZWRfdHgpCisJCWdvdG8gZG9fc2NoZWQ7CiAKLQlzYyA9IGlm
cC0+aWZfc29mdGM7CiAJaWYgKE5WX1RSWUxPQ0soc2MpKSB7CiAJCWludCBzY2hlZDsKIApAQCAt
MTYzMyw2ICsxNjQyLDcgQEAKIAkJCSAgICAmc2MtPmhuX3N0YXJ0X3Rhc2spOwogCQl9CiAJfSBl
bHNlIHsKK2RvX3NjaGVkOgogCQkvKgogCQkgKiBSZWxlYXNlIHRoZSBPQUNUSVZFIGVhcmxpZXIs
IHdpdGggdGhlIGhvcGUsIHRoYXQKIAkJICogb3RoZXJzIGNvdWxkIGNhdGNoIHVwLiAgVGhlIHRh
c2sgd2lsbCBjbGVhciB0aGUKZGlmZiAtLWdpdCBhL3N5cy9kZXYvaHlwZXJ2L25ldHZzYy9odl9u
ZXRfdnNjLmggYi9zeXMvZGV2L2h5cGVydi9uZXR2c2MvaHZfbmV0X3ZzYy5oCi0tLSBhL3N5cy9k
ZXYvaHlwZXJ2L25ldHZzYy9odl9uZXRfdnNjLmgKKysrIGIvc3lzL2Rldi9oeXBlcnYvbmV0dnNj
L2h2X25ldF92c2MuaApAQCAtMTAyMyw2ICsxMDIzLDcgQEAKIAlpbnQJCWhuX3R4ZGVzY19hdmFp
bDsKIAlpbnQJCWhuX3R4ZW9mOwogCisJaW50CQlobl9zY2hlZF90eDsKIAlpbnQJCWhuX2RpcmVj
dF90eF9zaXplOwogCXN0cnVjdCB0YXNrcXVldWUgKmhuX3R4X3Rhc2txOwogCXN0cnVjdCB0YXNr
CWhuX3N0YXJ0X3Rhc2s7Cgo=


--b1_19267c547ac6fd0909d37cf4c2a7da02--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?differential-rev-PHID-DREV-aawldvhjtuqx45nsi7bx-req>