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>