conf/113915: ndis wireless driver fails to associate when interface set to WPA

Scot Hetzel swhetzel at gmail.com
Thu Jun 21 16:40:12 UTC 2007


>Number:         113915
>Category:       conf
>Synopsis:       ndis wireless driver fails to associate when interface set to WPA
>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:   Thu Jun 21 16:40:12 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Scot Hetzel
>Release:        7.0-CURRENT
>Organization:
>Environment:
FreeBSD hp010 7.0-CURRENT FreeBSD 7.0-CURRENT #0: Tue Jun 19 01:49:53 CDT 2007     swhetzel at hp010:/usr/src/sys/amd64/compile/GENERIC  amd64

>Description:
When I try and boot a system with the NDIS interface configured as:

ifconfig_ndis0="WPA DHCP"

I see it continuously trying to get a DHCP address, but it fails.  I found the problem is because wpa_supplicant is not realizing that it had successfully connected to the wireless network, so it continuously connects/disconnects.

By starting /usr/sbin/ndis_events, then wpa_supplicant will associate, and the wireless network is accessible.

hp010# dmesg | grep ndis
ndis0: <Broadcom 802.11b/g WLAN> mem 0xc0204000-0xc0205fff irq 21 at device 2.0 on pci6
ndis0: [ITHREAD]
ndis0: NDIS API version: 5.1
ndis0: using obsoleted if_watchdog interface
ndis0: Ethernet address: 00:14:a5:72:68:64
>How-To-Repeat:
set the NDIS interface to "WPA DHCP" and then reboot the system.
>Fix:
Start ndis_events before starting wpa_supplicant for NDIS interfaces.

apply the attached patch which will start ndis_events when the NDIS interface is set for WPA.

Updated files:

etc/network.subr
etc/rc.d/Makefile

New file

etc/rc.d/ndis_events

Patch attached with submission follows:

Index: etc/network.subr
===================================================================
RCS file: /home/ncvs/src/etc/network.subr,v
retrieving revision 1.180
diff -u -r1.180 network.subr
--- etc/network.subr	23 May 2007 00:18:44 -0000	1.180
+++ etc/network.subr	21 Jun 2007 15:53:12 -0000
@@ -52,6 +52,11 @@
 		if [ $_cfg -ne 0 ] ; then
 			ifconfig $1 up
 		fi
+		case $1 in
+		ndis*)
+			/etc/rc.d/ndis_events start
+			;;
+		esac
 		/etc/rc.d/wpa_supplicant start $1
 		_cfg=0		# XXX: not sure this should count
 	fi
@@ -80,6 +85,11 @@
 
 	if wpaif $1; then
 		/etc/rc.d/wpa_supplicant stop $1
+		case $1 in
+		ndis*)
+			/etc/rc.d/ndis_events stop
+			;;
+		esac
 		_cfg=0
 	fi
 
Index: etc/rc.d/Makefile
===================================================================
RCS file: /home/ncvs/src/etc/rc.d/Makefile,v
retrieving revision 1.81
diff -u -r1.81 Makefile
--- etc/rc.d/Makefile	9 Apr 2007 19:21:27 -0000	1.81
+++ etc/rc.d/Makefile	21 Jun 2007 15:33:26 -0000
@@ -23,7 +23,7 @@
 	ldconfig local localpkg lpd \
 	mixer motd mountcritlocal mountcritremote mountlate \
 	mdconfig mdconfig2 mountd moused mroute6d mrouted msgs \
-	named natd netif netoptions \
+	named natd netif ndis_events netoptions \
 	network_ipv6 newsyslog nfsclient nfsd \
 	nfslocking nfsserver nisdomain nsswitch ntpd ntpdate \
 	othermta \
Index: etc/rc.d/ndis_events
===================================================================
RCS file: etc/rc.d/ndis_events
diff -N etc/rc.d/ndis_events
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ etc/rc.d/ndis_events	21 Jun 2007 15:35:44 -0000
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: ndis_events
+# REQUIRE: mountcritremote
+# BEFORE: wpa_supplicant
+# KEYWORD: nojail nostart
+
+. /etc/rc.subr
+. /etc/network.subr
+
+name="ndis_events"
+rcvar=
+command="/usr/sbin/${name}"
+
+load_rc_config $name
+run_rc_command "$1"


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list