Lines 229-250
sta_add(struct ieee80211_scan_state *ss,
Link Here
|
229 |
IEEE80211_ADDR_COPY(se->base.se_macaddr, macaddr); |
229 |
IEEE80211_ADDR_COPY(se->base.se_macaddr, macaddr); |
230 |
TAILQ_INSERT_TAIL(&st->st_entry, se, se_list); |
230 |
TAILQ_INSERT_TAIL(&st->st_entry, se, se_list); |
231 |
LIST_INSERT_HEAD(&st->st_hash[hash], se, se_hash); |
231 |
LIST_INSERT_HEAD(&st->st_hash[hash], se, se_hash); |
|
|
232 |
|
232 |
found: |
233 |
found: |
233 |
ise = &se->base; |
234 |
ise = &se->base; |
|
|
235 |
|
234 |
/* XXX ap beaconing multiple ssid w/ same bssid */ |
236 |
/* XXX ap beaconing multiple ssid w/ same bssid */ |
235 |
if (sp->ssid[1] != 0 && |
237 |
if (sp->ssid[1] != 0 && |
236 |
(ISPROBE(subtype) || ise->se_ssid[1] == 0)) |
238 |
(ISPROBE(subtype) || ise->se_ssid[1] == 0)) |
237 |
memcpy(ise->se_ssid, sp->ssid, 2 + sp->ssid[1]); |
239 |
memcpy(ise->se_ssid, sp->ssid, 2 + sp->ssid[1]); |
238 |
KASSERT(sp->rates[1] <= IEEE80211_RATE_MAXSIZE, |
240 |
|
239 |
("rate set too large: %u", sp->rates[1])); |
241 |
memcpy(ise->se_rates, sp->rates, |
240 |
memcpy(ise->se_rates, sp->rates, 2 + sp->rates[1]); |
242 |
2 + IEEE80211_SANITISE_RATESIZE(sp->rates[1])); |
241 |
if (sp->xrates != NULL) { |
243 |
if (sp->xrates != NULL) { |
242 |
/* XXX validate xrates[1] */ |
244 |
memcpy(ise->se_xrates, sp->xrates, |
243 |
KASSERT(sp->xrates[1] <= IEEE80211_RATE_MAXSIZE, |
245 |
2 + IEEE80211_SANITISE_RATESIZE(sp->xrates[1])); |
244 |
("xrate set too large: %u", sp->xrates[1])); |
|
|
245 |
memcpy(ise->se_xrates, sp->xrates, 2 + sp->xrates[1]); |
246 |
} else |
246 |
} else |
247 |
ise->se_xrates[1] = 0; |
247 |
ise->se_xrates[1] = 0; |
|
|
248 |
|
248 |
IEEE80211_ADDR_COPY(ise->se_bssid, wh->i_addr3); |
249 |
IEEE80211_ADDR_COPY(ise->se_bssid, wh->i_addr3); |
249 |
/* |
250 |
/* |
250 |
* Record rssi data using extended precision LPF filter. |
251 |
* Record rssi data using extended precision LPF filter. |