summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2008-05-01 05:11:33 +0000
committerthompsa <thompsa@FreeBSD.org>2008-05-01 05:11:33 +0000
commit078d0c4a42059d976fbeeb05e8fd5c1556b13246 (patch)
tree25fac41bb3ffa759f28080edf5c3b86387d41043
parenta96561521e584f7ce37efdbc079f9f3d125f8f39 (diff)
downloadFreeBSD-src-078d0c4a42059d976fbeeb05e8fd5c1556b13246.zip
FreeBSD-src-078d0c4a42059d976fbeeb05e8fd5c1556b13246.tar.gz
Do not call ndis_setstate_80211() until we are ready to associate, the vap may
not have been created yet and will panic. This requires ndis_scan() to always set the SSID. Reported by: Ben Kaduk
-rw-r--r--sys/dev/if_ndis/if_ndis.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c
index 111eeff..d9e583d 100644
--- a/sys/dev/if_ndis/if_ndis.c
+++ b/sys/dev/if_ndis/if_ndis.c
@@ -1960,10 +1960,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;
@@ -3171,18 +3167,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);
OpenPOWER on IntegriCloud