net80211: switch from ieee80211_iterate_nodes() to
ieee80211_iterate_nodes_vap() where possible; this should make the code a bit cleaner.
This commit is contained in:
parent
679761c0e0
commit
7db788c66f
@ -120,9 +120,9 @@ adhoc_vattach(struct ieee80211vap *vap)
|
||||
static void
|
||||
sta_leave(void *arg, struct ieee80211_node *ni)
|
||||
{
|
||||
struct ieee80211vap *vap = arg;
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
|
||||
if (ni->ni_vap == vap && ni != vap->iv_bss)
|
||||
if (ni != vap->iv_bss)
|
||||
ieee80211_node_leave(ni);
|
||||
}
|
||||
|
||||
@ -164,7 +164,8 @@ adhoc_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
||||
switch (ostate) {
|
||||
case IEEE80211_S_RUN: /* beacon miss */
|
||||
/* purge station table; entries are stale */
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, sta_leave, vap);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
sta_leave, NULL);
|
||||
/* fall thru... */
|
||||
case IEEE80211_S_INIT:
|
||||
if (vap->iv_des_chan != IEEE80211_CHAN_ANYC &&
|
||||
|
@ -107,9 +107,8 @@ hostap_vattach(struct ieee80211vap *vap)
|
||||
static void
|
||||
sta_disassoc(void *arg, struct ieee80211_node *ni)
|
||||
{
|
||||
struct ieee80211vap *vap = arg;
|
||||
|
||||
if (ni->ni_vap == vap && ni->ni_associd != 0) {
|
||||
if (ni->ni_associd != 0) {
|
||||
IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DISASSOC,
|
||||
IEEE80211_REASON_ASSOC_LEAVE);
|
||||
ieee80211_node_leave(ni);
|
||||
@ -119,9 +118,9 @@ sta_disassoc(void *arg, struct ieee80211_node *ni)
|
||||
static void
|
||||
sta_csa(void *arg, struct ieee80211_node *ni)
|
||||
{
|
||||
struct ieee80211vap *vap = arg;
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
|
||||
if (ni->ni_vap == vap && ni->ni_associd != 0)
|
||||
if (ni->ni_associd != 0)
|
||||
if (ni->ni_inact > vap->iv_inact_init) {
|
||||
ni->ni_inact = vap->iv_inact_init;
|
||||
IEEE80211_NOTE(vap, IEEE80211_MSG_INACT, ni,
|
||||
@ -132,9 +131,8 @@ sta_csa(void *arg, struct ieee80211_node *ni)
|
||||
static void
|
||||
sta_drop(void *arg, struct ieee80211_node *ni)
|
||||
{
|
||||
struct ieee80211vap *vap = arg;
|
||||
|
||||
if (ni->ni_vap == vap && ni->ni_associd != 0)
|
||||
if (ni->ni_associd != 0)
|
||||
ieee80211_node_leave(ni);
|
||||
}
|
||||
|
||||
@ -179,7 +177,8 @@ hostap_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
||||
ieee80211_dfs_cac_stop(vap);
|
||||
break;
|
||||
case IEEE80211_S_RUN:
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, sta_disassoc, vap);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
sta_disassoc, NULL);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -195,7 +194,8 @@ hostap_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
||||
switch (ostate) {
|
||||
case IEEE80211_S_CSA:
|
||||
case IEEE80211_S_RUN:
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, sta_disassoc, vap);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
sta_disassoc, NULL);
|
||||
/*
|
||||
* Clear overlapping BSS state; the beacon frame
|
||||
* will be reconstructed on transition to the RUN
|
||||
@ -289,7 +289,8 @@ hostap_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
||||
* Shorten inactivity timer of associated stations
|
||||
* to weed out sta's that don't follow a CSA.
|
||||
*/
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, sta_csa, vap);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
sta_csa, NULL);
|
||||
/*
|
||||
* Update bss node channel to reflect where
|
||||
* we landed after CSA.
|
||||
@ -340,7 +341,8 @@ hostap_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
||||
* such as capabilities and the negotiated rate
|
||||
* set may/will be wrong).
|
||||
*/
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, sta_drop, vap);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
sta_drop, NULL);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -347,7 +347,6 @@ ieee80211_ioctl_getscanresults(struct ieee80211vap *vap,
|
||||
}
|
||||
|
||||
struct stainforeq {
|
||||
struct ieee80211vap *vap;
|
||||
struct ieee80211req_sta_info *si;
|
||||
size_t space;
|
||||
};
|
||||
@ -366,8 +365,6 @@ get_sta_space(void *arg, struct ieee80211_node *ni)
|
||||
struct stainforeq *req = arg;
|
||||
size_t ielen;
|
||||
|
||||
if (req->vap != ni->ni_vap)
|
||||
return;
|
||||
if (ni->ni_vap->iv_opmode == IEEE80211_M_HOSTAP &&
|
||||
ni->ni_associd == 0) /* only associated stations */
|
||||
return;
|
||||
@ -383,8 +380,6 @@ get_sta_info(void *arg, struct ieee80211_node *ni)
|
||||
size_t ielen, len;
|
||||
uint8_t *cp;
|
||||
|
||||
if (req->vap != ni->ni_vap)
|
||||
return;
|
||||
if (vap->iv_opmode == IEEE80211_M_HOSTAP &&
|
||||
ni->ni_associd == 0) /* only associated stations */
|
||||
return;
|
||||
@ -472,10 +467,10 @@ getstainfo_common(struct ieee80211vap *vap, struct ieee80211req *ireq,
|
||||
|
||||
error = 0;
|
||||
req.space = 0;
|
||||
req.vap = vap;
|
||||
if (ni == NULL)
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, get_sta_space, &req);
|
||||
else
|
||||
if (ni == NULL) {
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_sta_space,
|
||||
&req);
|
||||
} else
|
||||
get_sta_space(&req, ni);
|
||||
if (req.space > ireq->i_len)
|
||||
req.space = ireq->i_len;
|
||||
@ -489,9 +484,10 @@ getstainfo_common(struct ieee80211vap *vap, struct ieee80211req *ireq,
|
||||
goto bad;
|
||||
}
|
||||
req.si = p;
|
||||
if (ni == NULL)
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, get_sta_info, &req);
|
||||
else
|
||||
if (ni == NULL) {
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
get_sta_info, &req);
|
||||
} else
|
||||
get_sta_info(&req, ni);
|
||||
ireq->i_len = space - req.space;
|
||||
error = copyout(p, (uint8_t *) ireq->i_data+off, ireq->i_len);
|
||||
|
@ -2717,7 +2717,6 @@ done:
|
||||
}
|
||||
|
||||
struct rssiinfo {
|
||||
struct ieee80211vap *vap;
|
||||
int rssi_samples;
|
||||
uint32_t rssi_total;
|
||||
};
|
||||
@ -2729,8 +2728,6 @@ get_hostap_rssi(void *arg, struct ieee80211_node *ni)
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
int8_t rssi;
|
||||
|
||||
if (info->vap != vap)
|
||||
return;
|
||||
/* only associated stations */
|
||||
if (ni->ni_associd == 0)
|
||||
return;
|
||||
@ -2748,8 +2745,6 @@ get_adhoc_rssi(void *arg, struct ieee80211_node *ni)
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
int8_t rssi;
|
||||
|
||||
if (info->vap != vap)
|
||||
return;
|
||||
/* only neighbors */
|
||||
/* XXX check bssid */
|
||||
if ((ni->ni_capinfo & IEEE80211_CAPINFO_IBSS) == 0)
|
||||
@ -2769,8 +2764,6 @@ get_mesh_rssi(void *arg, struct ieee80211_node *ni)
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
int8_t rssi;
|
||||
|
||||
if (info->vap != vap)
|
||||
return;
|
||||
/* only neighbors that peered successfully */
|
||||
if (ni->ni_mlstate != IEEE80211_NODE_MESH_ESTABLISHED)
|
||||
return;
|
||||
@ -2791,18 +2784,20 @@ ieee80211_getrssi(struct ieee80211vap *vap)
|
||||
|
||||
info.rssi_total = 0;
|
||||
info.rssi_samples = 0;
|
||||
info.vap = vap;
|
||||
switch (vap->iv_opmode) {
|
||||
case IEEE80211_M_IBSS: /* average of all ibss neighbors */
|
||||
case IEEE80211_M_AHDEMO: /* average of all neighbors */
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, get_adhoc_rssi, &info);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_adhoc_rssi,
|
||||
&info);
|
||||
break;
|
||||
case IEEE80211_M_HOSTAP: /* average of all associated stations */
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, get_hostap_rssi, &info);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_hostap_rssi,
|
||||
&info);
|
||||
break;
|
||||
#ifdef IEEE80211_SUPPORT_MESH
|
||||
case IEEE80211_M_MBSS: /* average of all mesh neighbors */
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, get_mesh_rssi, &info);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap, get_mesh_rssi,
|
||||
&info);
|
||||
break;
|
||||
#endif
|
||||
case IEEE80211_M_MONITOR: /* XXX */
|
||||
|
@ -209,9 +209,9 @@ tdma_vdetach(struct ieee80211vap *vap)
|
||||
static void
|
||||
sta_leave(void *arg, struct ieee80211_node *ni)
|
||||
{
|
||||
struct ieee80211vap *vap = arg;
|
||||
struct ieee80211vap *vap = ni->ni_vap;
|
||||
|
||||
if (ni->ni_vap == vap && ni != vap->iv_bss)
|
||||
if (ni != vap->iv_bss)
|
||||
ieee80211_node_leave(ni);
|
||||
}
|
||||
|
||||
@ -246,7 +246,8 @@ tdma_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg)
|
||||
ieee80211_cancel_scan(vap); /* background scan */
|
||||
if (ostate == IEEE80211_S_RUN) {
|
||||
/* purge station table; entries are stale */
|
||||
ieee80211_iterate_nodes(&ic->ic_sta, sta_leave, vap);
|
||||
ieee80211_iterate_nodes_vap(&ic->ic_sta, vap,
|
||||
sta_leave, NULL);
|
||||
}
|
||||
if (vap->iv_flags_ext & IEEE80211_FEXT_SCANREQ) {
|
||||
ieee80211_check_scan(vap,
|
||||
|
Loading…
x
Reference in New Issue
Block a user