net80211: unbreak 'show all vaps(/a)' ddb command
Replace ifnet list lookup (which is broken since r287197, because IFT_IEEE80211 type is not used anymore) with iteration on ieee80211com list. Reviewed by: adrian Differential Revision: https://reviews.freebsd.org/D6419
This commit is contained in:
parent
239f1cd983
commit
864a1457f8
@ -406,6 +406,17 @@ ieee80211_find_com(const char *name)
|
||||
return (ic);
|
||||
}
|
||||
|
||||
void
|
||||
ieee80211_iterate_coms(ieee80211_com_iter_func *f, void *arg)
|
||||
{
|
||||
struct ieee80211com *ic;
|
||||
|
||||
mtx_lock(&ic_list_mtx);
|
||||
LIST_FOREACH(ic, &ic_head, ic_next)
|
||||
(*f)(arg, ic);
|
||||
mtx_unlock(&ic_list_mtx);
|
||||
}
|
||||
|
||||
/*
|
||||
* Default reset method for use with the ioctl support. This
|
||||
* method is invoked after any state change in the 802.11
|
||||
|
@ -69,6 +69,8 @@ static void _db_show_vap(const struct ieee80211vap *, int, int);
|
||||
static void _db_show_com(const struct ieee80211com *,
|
||||
int showvaps, int showsta, int showmesh, int showprocs);
|
||||
|
||||
static void _db_show_all_vaps(void *, struct ieee80211com *);
|
||||
|
||||
static void _db_show_node_table(const char *tag,
|
||||
const struct ieee80211_node_table *);
|
||||
static void _db_show_channel(const char *tag, const struct ieee80211_channel *);
|
||||
@ -161,8 +163,6 @@ DB_SHOW_COMMAND(com, db_show_com)
|
||||
|
||||
DB_SHOW_ALL_COMMAND(vaps, db_show_all_vaps)
|
||||
{
|
||||
VNET_ITERATOR_DECL(vnet_iter);
|
||||
const struct ifnet *ifp;
|
||||
int i, showall = 0;
|
||||
|
||||
for (i = 0; modif[i] != '\0'; i++)
|
||||
@ -172,24 +172,7 @@ DB_SHOW_ALL_COMMAND(vaps, db_show_all_vaps)
|
||||
break;
|
||||
}
|
||||
|
||||
VNET_FOREACH(vnet_iter) {
|
||||
TAILQ_FOREACH(ifp, &V_ifnet, if_list)
|
||||
if (ifp->if_type == IFT_IEEE80211) {
|
||||
const struct ieee80211com *ic = ifp->if_l2com;
|
||||
|
||||
if (!showall) {
|
||||
const struct ieee80211vap *vap;
|
||||
db_printf("%s: com %p vaps:",
|
||||
ifp->if_xname, ic);
|
||||
TAILQ_FOREACH(vap, &ic->ic_vaps,
|
||||
iv_next)
|
||||
db_printf(" %s(%p)",
|
||||
vap->iv_ifp->if_xname, vap);
|
||||
db_printf("\n");
|
||||
} else
|
||||
_db_show_com(ic, 1, 1, 1, 1);
|
||||
}
|
||||
}
|
||||
ieee80211_iterate_coms(_db_show_all_vaps, &showall);
|
||||
}
|
||||
|
||||
#ifdef IEEE80211_SUPPORT_MESH
|
||||
@ -682,6 +665,21 @@ _db_show_com(const struct ieee80211com *ic, int showvaps, int showsta,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_db_show_all_vaps(void *arg, struct ieee80211com *ic)
|
||||
{
|
||||
int showall = *(int *)arg;
|
||||
|
||||
if (!showall) {
|
||||
const struct ieee80211vap *vap;
|
||||
db_printf("%s: com %p vaps:", ic->ic_name, ic);
|
||||
TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
|
||||
db_printf(" %s(%p)", vap->iv_ifp->if_xname, vap);
|
||||
db_printf("\n");
|
||||
} else
|
||||
_db_show_com(ic, 1, 1, 1, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
_db_show_node_table(const char *tag, const struct ieee80211_node_table *nt)
|
||||
{
|
||||
|
@ -714,6 +714,8 @@ void ieee80211_drain(struct ieee80211com *);
|
||||
void ieee80211_chan_init(struct ieee80211com *);
|
||||
struct ieee80211com *ieee80211_find_vap(const uint8_t mac[IEEE80211_ADDR_LEN]);
|
||||
struct ieee80211com *ieee80211_find_com(const char *name);
|
||||
typedef void ieee80211_com_iter_func(void *, struct ieee80211com *);
|
||||
void ieee80211_iterate_coms(ieee80211_com_iter_func *, void *);
|
||||
int ieee80211_media_change(struct ifnet *);
|
||||
void ieee80211_media_status(struct ifnet *, struct ifmediareq *);
|
||||
int ieee80211_ioctl(struct ifnet *, u_long, caddr_t);
|
||||
|
Loading…
x
Reference in New Issue
Block a user