Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/x86/pci Fix the wrong logic about making the number...



details:   https://anonhg.NetBSD.org/src/rev/f0f03688705a
branches:  trunk
changeset: 971560:f0f03688705a
user:      yamaguchi <yamaguchi%NetBSD.org@localhost>
date:      Mon Apr 27 23:40:37 2020 +0000

description:
Fix the wrong logic about making the number of vmx(4) TX/RX queue
be power of two

reviewed by nonaka@n.o.

diffstat:

 sys/arch/x86/pci/if_vmx.c |  27 ++++++++-------------------
 1 files changed, 8 insertions(+), 19 deletions(-)

diffs (53 lines):

diff -r b982c59a85c3 -r f0f03688705a sys/arch/x86/pci/if_vmx.c
--- a/sys/arch/x86/pci/if_vmx.c Mon Apr 27 23:35:40 2020 +0000
+++ b/sys/arch/x86/pci/if_vmx.c Mon Apr 27 23:40:37 2020 +0000
@@ -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 @@
 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;
-
-       return n;
+
+       if (__predict_false(n <= 0))
+               return 1;
+
+       return (1U << (fls32(n) - 1));
 }
 
 static inline void



Home | Main Index | Thread Index | Old Index