aboutsummaryrefslogtreecommitdiff
path: root/lib/lib80211
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2017-01-07 01:56:10 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2017-01-07 01:56:10 +0000
commit36ea5759aa7ab12082cfb112cff56fa2d22a1fb9 (patch)
tree6b02aba5db5d29a98c361e4c5d586424def4c0c9 /lib/lib80211
parent55c68c64a48b5ad0cfa574e90c25cc951df5537e (diff)
Notes
Diffstat (limited to 'lib/lib80211')
-rw-r--r--lib/lib80211/lib80211_regdomain.c32
-rw-r--r--lib/lib80211/lib80211_regdomain.h2
2 files changed, 34 insertions, 0 deletions
diff --git a/lib/lib80211/lib80211_regdomain.c b/lib/lib80211/lib80211_regdomain.c
index 32901a6b56e7a..35cc865efb58d 100644
--- a/lib/lib80211/lib80211_regdomain.c
+++ b/lib/lib80211/lib80211_regdomain.c
@@ -123,6 +123,10 @@ start_element(void *data, const char *name, const char **attr)
mt->curband = &mt->rd->bands_11ng;
else if (iseq(mode, "11na"))
mt->curband = &mt->rd->bands_11na;
+ else if (iseq(mode, "11ac"))
+ mt->curband = &mt->rd->bands_11ac;
+ else if (iseq(mode, "11acg"))
+ mt->curband = &mt->rd->bands_11acg;
else
warnx("unknown mode \"%s\" at line %ld",
__DECONST(char *, mode),
@@ -184,6 +188,14 @@ decode_flag(struct mystate *mt, const char *p, int len)
FLAG(IEEE80211_CHAN_G),
FLAG(IEEE80211_CHAN_HT20),
FLAG(IEEE80211_CHAN_HT40),
+ FLAG(IEEE80211_CHAN_VHT20),
+ FLAG(IEEE80211_CHAN_VHT40),
+ FLAG(IEEE80211_CHAN_VHT80),
+ /*
+ * XXX VHT80_80? This likely should be done by
+ * 80MHz chan logic in net80211 / ifconfig.
+ */
+ FLAG(IEEE80211_CHAN_VHT160),
FLAG(IEEE80211_CHAN_ST),
FLAG(IEEE80211_CHAN_TURBO),
FLAG(IEEE80211_CHAN_PASSIVE),
@@ -515,6 +527,24 @@ lib80211_regdomain_readconfig(struct regdata *rdp, const void *p, size_t len)
}
nb->band = id;
}
+ LIST_FOREACH(nb, &dp->bands_11ac, next) {
+ id = findid(rdp, nb->band, FREQBAND);
+ if (id == NULL) {
+ warnx("undefined 11ac band \"%s\"",
+ __DECONST(char *, nb->band));
+ errors++;
+ }
+ nb->band = id;
+ }
+ LIST_FOREACH(nb, &dp->bands_11acg, next) {
+ id = findid(rdp, nb->band, FREQBAND);
+ if (id == NULL) {
+ warnx("undefined 11acg band \"%s\"",
+ __DECONST(char *, nb->band));
+ errors++;
+ }
+ nb->band = id;
+ }
}
LIST_FOREACH(cp, &rdp->countries, next) {
id = cp->rd;
@@ -562,6 +592,8 @@ lib80211_regdomain_cleanup(struct regdata *rdp)
cleanup_bands(&dp->bands_11a);
cleanup_bands(&dp->bands_11ng);
cleanup_bands(&dp->bands_11na);
+ cleanup_bands(&dp->bands_11ac);
+ cleanup_bands(&dp->bands_11acg);
if (dp->name != NULL)
free(__DECONST(char *, dp->name));
}
diff --git a/lib/lib80211/lib80211_regdomain.h b/lib/lib80211/lib80211_regdomain.h
index d1803c2558450..a8a4207c98ac8 100644
--- a/lib/lib80211/lib80211_regdomain.h
+++ b/lib/lib80211/lib80211_regdomain.h
@@ -75,6 +75,8 @@ struct regdomain {
netband_head bands_11a; /* 11a operation */
netband_head bands_11ng;/* 11ng operation */
netband_head bands_11na;/* 11na operation */
+ netband_head bands_11ac;/* 11ac 5GHz operation */
+ netband_head bands_11acg;/* 11ac 2GHz operation */
LIST_ENTRY(regdomain) next;
};