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>
