Date: Mon, 21 Dec 2015 20:40:17 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r292568 - stable/10/sys/dev/vmware/vmxnet3 Message-ID: <201512212040.tBLKeHHW097045@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jhb Date: Mon Dec 21 20:40:17 2015 New Revision: 292568 URL: https://svnweb.freebsd.org/changeset/base/292568 Log: MFC 290948: Only use a power of 2 for the number of receive and transmit queues. Using other values causes VMXNET3_CMD_ENABLE to fail. The Linux driver also enforces this restriction. Modified: stable/10/sys/dev/vmware/vmxnet3/if_vmx.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/vmware/vmxnet3/if_vmx.c ============================================================================== --- stable/10/sys/dev/vmware/vmxnet3/if_vmx.c Mon Dec 21 20:36:01 2015 (r292567) +++ stable/10/sys/dev/vmware/vmxnet3/if_vmx.c Mon Dec 21 20:40:17 2015 (r292568) @@ -511,6 +511,13 @@ vmxnet3_check_version(struct vmxnet3_sof return (0); } +static int +trunc_powerof2(int val) +{ + + return (1U << (fls(val) - 1)); +} + static void vmxnet3_initial_config(struct vmxnet3_softc *sc) { @@ -521,14 +528,14 @@ vmxnet3_initial_config(struct vmxnet3_so nqueue = VMXNET3_DEF_TX_QUEUES; if (nqueue > mp_ncpus) nqueue = mp_ncpus; - sc->vmx_max_ntxqueues = nqueue; + sc->vmx_max_ntxqueues = trunc_powerof2(nqueue); nqueue = vmxnet3_tunable_int(sc, "rxnqueue", vmxnet3_default_rxnqueue); if (nqueue > VMXNET3_MAX_RX_QUEUES || nqueue < 1) nqueue = VMXNET3_DEF_RX_QUEUES; if (nqueue > mp_ncpus) nqueue = mp_ncpus; - sc->vmx_max_nrxqueues = nqueue; + sc->vmx_max_nrxqueues = trunc_powerof2(nqueue); if (vmxnet3_tunable_int(sc, "mq_disable", vmxnet3_mq_disable)) { sc->vmx_max_nrxqueues = 1;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201512212040.tBLKeHHW097045>