change ic_getradiocaps driver callback to include the max # channels
so callers know the size of the array passed down
This commit is contained in:
parent
84e7c58867
commit
5fe9f04492
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=187800
@ -205,7 +205,7 @@ static void ath_newassoc(struct ieee80211_node *, int);
|
||||
static int ath_setregdomain(struct ieee80211com *,
|
||||
struct ieee80211_regdomain *, int,
|
||||
struct ieee80211_channel []);
|
||||
static void ath_getradiocaps(struct ieee80211com *, int *,
|
||||
static void ath_getradiocaps(struct ieee80211com *, int, int *,
|
||||
struct ieee80211_channel []);
|
||||
static int ath_getchannels(struct ath_softc *);
|
||||
static void ath_led_event(struct ath_softc *, int);
|
||||
@ -6332,7 +6332,7 @@ ath_setregdomain(struct ieee80211com *ic, struct ieee80211_regdomain *rd,
|
||||
|
||||
static void
|
||||
ath_getradiocaps(struct ieee80211com *ic,
|
||||
int *nchans, struct ieee80211_channel chans[])
|
||||
int maxchans, int *nchans, struct ieee80211_channel chans[])
|
||||
{
|
||||
struct ath_softc *sc = ic->ic_ifp->if_softc;
|
||||
struct ath_hal *ah = sc->sc_ah;
|
||||
|
@ -708,7 +708,7 @@ ieee80211_ioctl_getdevcaps(struct ieee80211com *ic,
|
||||
dc->dc_cryptocaps = ic->ic_cryptocaps;
|
||||
dc->dc_htcaps = ic->ic_htcaps;
|
||||
ci = &dc->dc_chaninfo;
|
||||
ic->ic_getradiocaps(ic, &ci->ic_nchans, ci->ic_chans);
|
||||
ic->ic_getradiocaps(ic, IEEE80211_CHAN_MAX, &ci->ic_nchans, ci->ic_chans);
|
||||
ieee80211_sort_channels(ci->ic_chans, ci->ic_nchans);
|
||||
error = copyout(dc, ireq->i_data, sizeof(*dc));
|
||||
free(dc, M_TEMP);
|
||||
|
@ -44,12 +44,14 @@ __FBSDID("$FreeBSD$");
|
||||
#include <net80211/ieee80211_regdomain.h>
|
||||
|
||||
static void
|
||||
null_getradiocaps(struct ieee80211com *ic, int *n, struct ieee80211_channel *c)
|
||||
null_getradiocaps(struct ieee80211com *ic, int maxchan,
|
||||
int *n, struct ieee80211_channel *c)
|
||||
{
|
||||
/* just feed back the current channel list */
|
||||
*n = ic->ic_nchans;
|
||||
memcpy(c, ic->ic_channels,
|
||||
ic->ic_nchans*sizeof(struct ieee80211_channel));
|
||||
*n = ic->ic_nchans; /* XXX return count copied? */
|
||||
if (maxchan > ic->ic_nchans)
|
||||
maxchan = ic->ic_nchans;
|
||||
memcpy(c, ic->ic_channels, maxchan*sizeof(struct ieee80211_channel));
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -208,7 +208,7 @@ struct ieee80211com {
|
||||
ieee80211vap_attach ic_vattach[IEEE80211_OPMODE_MAX];
|
||||
/* return hardware/radio capabilities */
|
||||
void (*ic_getradiocaps)(struct ieee80211com *,
|
||||
int *, struct ieee80211_channel []);
|
||||
int, int *, struct ieee80211_channel []);
|
||||
/* check and/or prepare regdomain state change */
|
||||
int (*ic_setregdomain)(struct ieee80211com *,
|
||||
struct ieee80211_regdomain *,
|
||||
|
Loading…
Reference in New Issue
Block a user