Module Name: src
Committed By: yamaguchi
Date: Mon Apr 27 23:40:37 UTC 2020
Modified Files:
src/sys/arch/x86/pci: if_vmx.c
Log Message:
Fix the wrong logic about making the number of vmx(4) TX/RX queue
be power of two
reviewed by [email protected].
To generate a diff of this commit:
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/x86/pci/if_vmx.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/x86/pci/if_vmx.c
diff -u src/sys/arch/x86/pci/if_vmx.c:1.59 src/sys/arch/x86/pci/if_vmx.c:1.60
--- src/sys/arch/x86/pci/if_vmx.c:1.59 Tue Mar 24 09:27:46 2020
+++ src/sys/arch/x86/pci/if_vmx.c Mon Apr 27 23:40:37 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: if_vmx.c,v 1.59 2020/03/24 09:27:46 knakahara Exp $ */
+/* $NetBSD: if_vmx.c,v 1.60 2020/04/27 23:40:37 yamaguchi Exp $ */
/* $OpenBSD: if_vmx.c,v 1.16 2014/01/22 06:04:17 brad Exp $ */
/*
@@ -19,12 +19,13 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_vmx.c,v 1.59 2020/03/24 09:27:46 knakahara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_vmx.c,v 1.60 2020/04/27 23:40:37 yamaguchi Exp $");
#include <sys/param.h>
#include <sys/cpu.h>
#include <sys/kernel.h>
#include <sys/kmem.h>
+#include <sys/bitops.h>
#include <sys/bus.h>
#include <sys/device.h>
#include <sys/mbuf.h>
@@ -466,23 +467,11 @@ CFATTACH_DECL3_NEW(vmx, sizeof(struct vm
static int
vmxnet3_calc_queue_size(int n)
{
- int v, q;
- v = n;
- while (v != 0) {
- if (powerof2(n) != 0)
- break;
- v /= 2;
- q = rounddown2(n, v);
- if (q != 0) {
- n = q;
- break;
- }
- }
- if (n == 0)
- n = 1;
+ if (__predict_false(n <= 0))
+ return 1;
- return n;
+ return (1U << (fls32(n) - 1));
}
static inline void