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