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>