Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142361944
D6140.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D6140.diff
View Options
Index: head/sys/dev/bwn/if_bwn.c
===================================================================
--- head/sys/dev/bwn/if_bwn.c
+++ head/sys/dev/bwn/if_bwn.c
@@ -128,7 +128,7 @@
static void bwn_shm_ctlword(struct bwn_mac *, uint16_t,
uint16_t);
static void bwn_addchannels(struct ieee80211_channel [], int, int *,
- const struct bwn_channelinfo *, int);
+ const struct bwn_channelinfo *, const uint8_t []);
static int bwn_raw_xmit(struct ieee80211_node *, struct mbuf *,
const struct ieee80211_bpf_params *);
static void bwn_updateslot(struct ieee80211com *);
@@ -1459,14 +1459,12 @@
return (ENODEV);
}
-#define IEEE80211_CHAN_HTG (IEEE80211_CHAN_HT | IEEE80211_CHAN_G)
-#define IEEE80211_CHAN_HTA (IEEE80211_CHAN_HT | IEEE80211_CHAN_A)
-
static int
bwn_setup_channels(struct bwn_mac *mac, int have_bg, int have_a)
{
struct bwn_softc *sc = mac->mac_sc;
struct ieee80211com *ic = &sc->sc_ic;
+ uint8_t bands[howmany(IEEE80211_MODE_MAX, 8)];
memset(ic->ic_channels, 0, sizeof(ic->ic_channels));
ic->ic_nchans = 0;
@@ -1476,26 +1474,20 @@
have_bg,
have_a);
- if (have_bg)
+ if (have_bg) {
+ memset(bands, 0, sizeof(bands));
+ setbit(bands, IEEE80211_MODE_11B);
+ setbit(bands, IEEE80211_MODE_11G);
bwn_addchannels(ic->ic_channels, IEEE80211_CHAN_MAX,
- &ic->ic_nchans, &bwn_chantable_bg, IEEE80211_CHAN_G);
-#if 0
- if (mac->mac_phy.type == BWN_PHYTYPE_N) {
- if (have_a)
- bwn_addchannels(ic->ic_channels, IEEE80211_CHAN_MAX,
- &ic->ic_nchans, &bwn_chantable_n,
- IEEE80211_CHAN_HTA);
- } else {
- if (have_a)
- bwn_addchannels(ic->ic_channels, IEEE80211_CHAN_MAX,
- &ic->ic_nchans, &bwn_chantable_a,
- IEEE80211_CHAN_A);
+ &ic->ic_nchans, &bwn_chantable_bg, bands);
}
-#endif
- if (have_a)
+
+ if (have_a) {
+ memset(bands, 0, sizeof(bands));
+ setbit(bands, IEEE80211_MODE_11A);
bwn_addchannels(ic->ic_channels, IEEE80211_CHAN_MAX,
- &ic->ic_nchans, &bwn_chantable_a,
- IEEE80211_CHAN_A);
+ &ic->ic_nchans, &bwn_chantable_a, bands);
+ }
mac->mac_phy.supports_2ghz = have_bg;
mac->mac_phy.supports_5ghz = have_a;
@@ -1609,63 +1601,16 @@
}
static void
-bwn_addchan(struct ieee80211_channel *c, int freq, int flags, int ieee,
- int txpow)
-{
-
- c->ic_freq = freq;
- c->ic_flags = flags;
- c->ic_ieee = ieee;
- c->ic_minpower = 0;
- c->ic_maxpower = 2 * txpow;
- c->ic_maxregpower = txpow;
-}
-
-static void
bwn_addchannels(struct ieee80211_channel chans[], int maxchans, int *nchans,
- const struct bwn_channelinfo *ci, int flags)
+ const struct bwn_channelinfo *ci, const uint8_t bands[])
{
- struct ieee80211_channel *c;
- int i;
+ int i, error;
- c = &chans[*nchans];
+ for (i = 0, error = 0; i < ci->nchannels && error == 0; i++) {
+ const struct bwn_channel *hc = &ci->channels[i];
- for (i = 0; i < ci->nchannels; i++) {
- const struct bwn_channel *hc;
-
- hc = &ci->channels[i];
- if (*nchans >= maxchans)
- break;
- bwn_addchan(c, hc->freq, flags, hc->ieee, hc->maxTxPow);
- c++, (*nchans)++;
- if (flags == IEEE80211_CHAN_G || flags == IEEE80211_CHAN_HTG) {
- /* g channel have a separate b-only entry */
- if (*nchans >= maxchans)
- break;
- c[0] = c[-1];
- c[-1].ic_flags = IEEE80211_CHAN_B;
- c++, (*nchans)++;
- }
- if (flags == IEEE80211_CHAN_HTG) {
- /* HT g channel have a separate g-only entry */
- if (*nchans >= maxchans)
- break;
- c[-1].ic_flags = IEEE80211_CHAN_G;
- c[0] = c[-1];
- c[0].ic_flags &= ~IEEE80211_CHAN_HT;
- c[0].ic_flags |= IEEE80211_CHAN_HT20; /* HT20 */
- c++, (*nchans)++;
- }
- if (flags == IEEE80211_CHAN_HTA) {
- /* HT a channel have a separate a-only entry */
- if (*nchans >= maxchans)
- break;
- c[-1].ic_flags = IEEE80211_CHAN_A;
- c[0] = c[-1];
- c[0].ic_flags &= ~IEEE80211_CHAN_HT;
- c[0].ic_flags |= IEEE80211_CHAN_HT20; /* HT20 */
- c++, (*nchans)++;
- }
+ error = ieee80211_add_channel(chans, maxchans, nchans,
+ hc->ieee, hc->freq, hc->maxTxPow, 0, bands);
}
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jan 20, 2:14 AM (6 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27757779
Default Alt Text
D6140.diff (3 KB)
Attached To
Mode
D6140: bwn: switch to ieee80211_add_channel()
Attached
Detach File
Event Timeline
Log In to Comment