Date: Sat, 14 Jan 2012 21:02:43 GMT From: Eugen Konkov <kes-kes@yandex.ru> To: freebsd-gnats-submit@FreeBSD.org Subject: misc/164130: broken netisr initialization Message-ID: <201201142102.q0EL2h0R036278@red.freebsd.org> Resent-Message-ID: <201201142110.q0ELAFQH069395@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 164130
>Category: misc
>Synopsis: broken netisr initialization
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sat Jan 14 21:10:15 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Eugen Konkov
>Release: 10.0-CURRENT
>Organization:
ISP FreeLine
>Environment:
# uname -a
FreeBSD meta-up 10.0-CURRENT FreeBSD 10.0-CURRENT #8 r230107M: Sat Jan 14 21:02:14 EET 2012 adm@meta-up:/usr/obj/usr/src.svn/head10/sys/KES_KERN_v10 i386
>Description:
netisr has been broken in r230059
and after booting there are conflicting values in sysctl net.isr
>How-To-Repeat:
just run:
#sysctl net.isr
# sysctl net.isr
net.isr.direct: 0
net.isr.direct_force: 0
net.isr.dispatch: direct
for net.isr.dispatch=direct is conflicting with values direct=0 and direct_force=0
>Fix:
you must call netisr_dispatch_policy_compat() in any case dispite on net.isr.dispatch is set or not in /boot/loader.conf
Index: src/sys/net/netisr.c
===================================================================
--- src/sys/net/netisr.c (revision 230107)
+++ src/sys/net/netisr.c (working copy)
@@ -1201,13 +1201,14 @@
error = EINVAL;
if (error == 0) {
netisr_dispatch_policy = dispatch_policy;
- netisr_dispatch_policy_compat();
} else
printf(
"%s: invalid dispatch policy %s, using default\n",
__func__, tmp);
}
+ netisr_dispatch_policy_compat();
+
netisr_start_swi(curcpu, pcpu_find(curcpu));
}
SYSINIT(netisr_init, SI_SUB_SOFTINTR, SI_ORDER_FIRST, netisr_init, NULL);
or send way: you must setup default values for direct and direct_force to 1 because of default dispatcher is 'direct'
Index: src/sys/net/netisr.c
===================================================================
--- src/sys/net/netisr.c (revision 230107)
+++ src/sys/net/netisr.c (working copy)
@@ -158,11 +158,11 @@
* dispatch policy state. Now, we provide read-only export via them so that
* older netstat binaries work. At some point they can be garbage collected.
*/
-static int netisr_direct_force;
+static int netisr_direct_force = 1;
SYSCTL_INT(_net_isr, OID_AUTO, direct_force, CTLFLAG_RD,
&netisr_direct_force, 0, "compat: force direct dispatch");
-static int netisr_direct;
+static int netisr_direct = 1;
SYSCTL_INT(_net_isr, OID_AUTO, direct, CTLFLAG_RD, &netisr_direct, 0,
"compat: enable direct dispatch");
But I think first way is more right way
*Sponsored by ISP FreeLine, Eugen Konkov
>Release-Note:
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201142102.q0EL2h0R036278>
