Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Apr 2008 16:00:21 +1200
From:      Andrew Thompson <thompsa@FreeBSD.org>
To:        Ben Kaduk <minimarmot@gmail.com>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: HEADSUP: 802.11 vap support merged
Message-ID:  <20080427040021.GC98671@citylink.fud.org.nz>
In-Reply-To: <47d0403c0804261757w5eb90be4k1f4f06521fe01bd@mail.gmail.com>
References:  <480D6667.4020509@errno.com> <47d0403c0804261757w5eb90be4k1f4f06521fe01bd@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--KsGdsel6WgEHnImy
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sat, Apr 26, 2008 at 08:57:27PM -0400, Ben Kaduk wrote:
> Hi Sam,
> 
> On 4/22/08, Sam Leffler <sam@errno.com> wrote:
> > From UPDATING:
> >
> >  20080420:
> >        The 802.11 wireless support was redone to enable multi-bss
> >        operation on devices that are capable.  The underlying device
> >        is no longer used directly but instead wlanX devices are
> >        cloned with ifconfig.  This requires changes to rc.conf files.
> >
> 
> Again, sorry for jumping in late.
> 
> Do I interpret this correctly as that it is unsupported, now, to
> do something like `ifconfig ndis0 up`?
> In my present configuration, I can do:
> ifconfig wlan0 create wlandev ndis0
> ifconfig ndis0 up
> ...
> and get a useable connection, but:
> ifconfig ndis0 up
> gives me a panic (hand transcribed)
> Fatal trap 12: page fault while in kernel mode
> ndis_setstate_80211

I can see why this would happen, can you try this patch.


Andrew

--KsGdsel6WgEHnImy
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="ndis_vap.diff"

Index: if_ndis.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/if_ndis/if_ndis.c,v
retrieving revision 1.134
diff -u -p -r1.134 if_ndis.c
--- if_ndis.c	20 Apr 2008 20:35:36 -0000	1.134
+++ if_ndis.c	27 Apr 2008 03:58:23 -0000
@@ -1958,10 +1958,6 @@ ndis_init(xsc)
 
 	/* Setup task offload. */
 	ndis_set_offload(sc);
-
-	if (sc->ndis_80211)
-		ndis_setstate_80211(sc);
-
 	NDIS_LOCK(sc);
 
 	sc->ndis_txidx = 0;
@@ -3133,18 +3129,20 @@ ndis_scan(void *arg, int npending)
 		return;
 	}
 
-	if (ss->ss_nssid != 0) {
+	len = sizeof(ssid);
+	bzero((char *)&ssid, len);
+	if (ss->ss_nssid == 0)
+		ssid.ns_ssidlen = 1;
+	else {
 		/* Perform a directed scan */
-		len = sizeof(ssid);
-		bzero((char *)&ssid, len);
 		ssid.ns_ssidlen = ss->ss_ssid[0].len;
 		bcopy(ss->ss_ssid[0].ssid, ssid.ns_ssid, ssid.ns_ssidlen);
-
-		error = ndis_set_info(sc, OID_802_11_SSID, &ssid, &len);
-		if (error)
-			DPRINTF(("%s: set ESSID failed\n", __func__));
 	}
 
+	error = ndis_set_info(sc, OID_802_11_SSID, &ssid, &len);
+	if (error)
+		DPRINTF(("%s: set ESSID failed\n", __func__));
+
 	len = 0;
 	error = ndis_set_info(sc, OID_802_11_BSSID_LIST_SCAN,
 	    NULL, &len);

--KsGdsel6WgEHnImy--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080427040021.GC98671>