Changeset View
Changeset View
Standalone View
Standalone View
sys/net80211/ieee80211_ioctl.c
| Show First 20 Lines • Show All 373 Lines • ▼ Show 20 Lines | |||||
| static void | static void | ||||
| get_sta_info(void *arg, struct ieee80211_node *ni) | get_sta_info(void *arg, struct ieee80211_node *ni) | ||||
| { | { | ||||
| struct stainforeq *req = arg; | struct stainforeq *req = arg; | ||||
| struct ieee80211_node_txrate tr; | struct ieee80211_node_txrate tr; | ||||
| struct ieee80211vap *vap = ni->ni_vap; | struct ieee80211vap *vap = ni->ni_vap; | ||||
| struct ieee80211req_sta_info *si; | struct ieee80211req_sta_info *si; | ||||
| net80211_rssi_t rssi; | |||||
| size_t ielen, len; | size_t ielen, len; | ||||
| uint8_t *cp; | uint8_t *cp; | ||||
| if (vap->iv_opmode == IEEE80211_M_HOSTAP && | if (vap->iv_opmode == IEEE80211_M_HOSTAP && | ||||
| ni->ni_associd == 0) /* only associated stations */ | ni->ni_associd == 0) /* only associated stations */ | ||||
| return; | return; | ||||
| if (ni->ni_chan == IEEE80211_CHAN_ANYC) /* XXX bogus entry */ | if (ni->ni_chan == IEEE80211_CHAN_ANYC) /* XXX bogus entry */ | ||||
| return; | return; | ||||
| len = sta_space(ni, &ielen); | len = sta_space(ni, &ielen); | ||||
| if (len > req->space) | if (len > req->space) | ||||
| return; | return; | ||||
| si = req->si; | si = req->si; | ||||
| si->isi_len = len; | si->isi_len = len; | ||||
| si->isi_ie_off = sizeof(struct ieee80211req_sta_info); | si->isi_ie_off = sizeof(struct ieee80211req_sta_info); | ||||
| si->isi_ie_len = ielen; | si->isi_ie_len = ielen; | ||||
| si->isi_freq = ni->ni_chan->ic_freq; | si->isi_freq = ni->ni_chan->ic_freq; | ||||
| si->isi_flags = ni->ni_chan->ic_flags; | si->isi_flags = ni->ni_chan->ic_flags; | ||||
| si->isi_state = ni->ni_flags; | si->isi_state = ni->ni_flags; | ||||
| si->isi_authmode = ni->ni_authmode; | si->isi_authmode = ni->ni_authmode; | ||||
| vap->iv_ic->ic_node_getsignal(ni, &si->isi_rssi, &si->isi_noise); | vap->iv_ic->ic_node_getsignal(ni, &rssi, &si->isi_noise); | ||||
| si->isi_rssi = rssi; | |||||
| vap->iv_ic->ic_node_getmimoinfo(ni, &si->isi_mimo); | vap->iv_ic->ic_node_getmimoinfo(ni, &si->isi_mimo); | ||||
| si->isi_capinfo = ni->ni_capinfo; | si->isi_capinfo = ni->ni_capinfo; | ||||
| si->isi_erp = ni->ni_erp; | si->isi_erp = ni->ni_erp; | ||||
| IEEE80211_ADDR_COPY(si->isi_macaddr, ni->ni_macaddr); | IEEE80211_ADDR_COPY(si->isi_macaddr, ni->ni_macaddr); | ||||
| si->isi_nrates = ni->ni_rates.rs_nrates; | si->isi_nrates = ni->ni_rates.rs_nrates; | ||||
| if (si->isi_nrates > 15) | if (si->isi_nrates > 15) | ||||
| si->isi_nrates = 15; | si->isi_nrates = 15; | ||||
| memcpy(si->isi_rates, ni->ni_rates.rs_rates, si->isi_nrates); | memcpy(si->isi_rates, ni->ni_rates.rs_rates, si->isi_nrates); | ||||
| ▲ Show 20 Lines • Show All 3,323 Lines • Show Last 20 Lines | |||||