* [RFC] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band @ 2012-02-22 17:51 Mahesh 2012-02-22 17:57 ` Johannes Berg 0 siblings, 1 reply; 15+ messages in thread From: Mahesh @ 2012-02-22 17:51 UTC (permalink / raw) To: linville; +Cc: linux-wireless, johannes This change is for marking 80Mhz bandwidth supported channel flags in 5Gig band. Signed-off-by: Mahesh Palivela (maheshp@posedge.com) --- include/net/cfg80211.h | 20 +++++++++---- net/wireless/reg.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 6 deletions(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index e0c9ff3..7fb77d5 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -93,18 +93,26 @@ enum ieee80211_band { * is not permitted. * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel * is not permitted. + * @IEEE80211_CHAN_NO_VHT80PLUS: extension channel above this channel + * is not permitted. + * @IEEE80211_CHAN_NO_VHT80MINUS: extension channel below this channel + * is not permitted. */ enum ieee80211_channel_flags { - IEEE80211_CHAN_DISABLED = 1<<0, - IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, - IEEE80211_CHAN_NO_IBSS = 1<<2, - IEEE80211_CHAN_RADAR = 1<<3, - IEEE80211_CHAN_NO_HT40PLUS = 1<<4, - IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + IEEE80211_CHAN_DISABLED = 1<<0, + IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, + IEEE80211_CHAN_NO_IBSS = 1<<2, + IEEE80211_CHAN_RADAR = 1<<3, + IEEE80211_CHAN_NO_HT40PLUS = 1<<4, + IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + IEEE80211_CHAN_NO_VHT80PLUS = 1<<6, + IEEE80211_CHAN_NO_VHT80MINUS = 1<<7, }; #define IEEE80211_CHAN_NO_HT40 \ (IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) +#define IEEE80211_CHAN_NO_VHT80 \ + (IEEE80211_CHAN_NO_VHT80PLUS | IEEE80211_CHAN_NO_VHT80MINUS) /** * struct ieee80211_channel - channel definition diff --git a/net/wireless/reg.c b/net/wireless/reg.c index e9a0ac8..dfa8f5d 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -1048,6 +1048,77 @@ static void reg_process_beacons(struct wiphy *wiphy) wiphy_update_beacon_reg(wiphy); } +static bool is_vht80_not_allowed(struct ieee80211_channel *chan) +{ + if (!chan) + return true; + if (chan->flags & IEEE80211_CHAN_DISABLED) + return true; + /* This would happen when regulatory rules disallow VHT80 completely */ + if (IEEE80211_CHAN_NO_VHT80 == (chan->flags & (IEEE80211_CHAN_NO_VHT80))) + return true; + return false; +} + +static void reg_process_vht_flags_channel(struct wiphy *wiphy, + unsigned int chan_idx) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *channel; + struct ieee80211_channel *channel_before = NULL, *channel_after = NULL; + unsigned int i; + + assert_cfg80211_lock(); + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + BUG_ON(chan_idx >= sband->n_channels); + channel = &sband->channels[chan_idx]; + + if (is_vht80_not_allowed(channel)) { + channel->flags |= IEEE80211_CHAN_NO_VHT80; + return; + } + + /* + * We need to ensure the extension channels exist to + * be able to use VHT80- or VHT80+, this finds them (or not) + */ + for (i = 0; i < sband->n_channels; i++) { + struct ieee80211_channel *c = &sband->channels[i]; + if (c->center_freq == (channel->center_freq - 40)) + channel_before = c; + if (c->center_freq == (channel->center_freq + 40)) + channel_after = c; + } + + /* + * Please note that this assumes target bandwidth is 40 MHz, + * if that ever changes we also need to change the below logic + * to include that as well. + */ + if (is_vht80_not_allowed(channel_before)) + channel->flags |= IEEE80211_CHAN_NO_VHT80MINUS; + else + channel->flags &= ~IEEE80211_CHAN_NO_VHT80MINUS; + + if (is_vht80_not_allowed(channel_after)) + channel->flags |= IEEE80211_CHAN_NO_VHT80PLUS; + else + channel->flags &= ~IEEE80211_CHAN_NO_VHT80PLUS; +} + +static void reg_process_vht_flags(struct wiphy *wiphy) +{ + unsigned int i; + struct ieee80211_supported_band *sband; + + BUG_ON(!wiphy->bands[IEEE80211_BAND_5GHZ]); + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + + for (i = 0; i < sband->n_channels; i++) + reg_process_vht_flags_channel(wiphy, i); +} + static bool is_ht40_not_allowed(struct ieee80211_channel *chan) { if (!chan) @@ -1154,6 +1225,7 @@ static void wiphy_update_regulatory(struct wiphy *wiphy, reg_process_beacons(wiphy); reg_process_ht_flags(wiphy); + reg_process_vht_flags(wiphy); if (wiphy->reg_notifier) wiphy->reg_notifier(wiphy, last_request); } ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFC] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-22 17:51 [RFC] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band Mahesh @ 2012-02-22 17:57 ` Johannes Berg 2012-02-22 18:57 ` Johannes Berg 0 siblings, 1 reply; 15+ messages in thread From: Johannes Berg @ 2012-02-22 17:57 UTC (permalink / raw) To: Mahesh; +Cc: linville, linux-wireless On Wed, 2012-02-22 at 23:21 +0530, Mahesh wrote: > This change is for marking 80Mhz bandwidth supported channel flags in > 5Gig band. This patch is not only completely mangled, it also neglects to actually support this in the regdb etc. What's the point? johannes > Signed-off-by: Mahesh Palivela (maheshp@posedge.com) > --- > > include/net/cfg80211.h | 20 +++++++++---- > net/wireless/reg.c | 72 > ++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 86 insertions(+), 6 deletions(-) > > diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h > index e0c9ff3..7fb77d5 100644 > --- a/include/net/cfg80211.h > +++ b/include/net/cfg80211.h > @@ -93,18 +93,26 @@ enum ieee80211_band { > * is not permitted. > * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel > * is not permitted. > + * @IEEE80211_CHAN_NO_VHT80PLUS: extension channel above this channel > + * is not permitted. > + * @IEEE80211_CHAN_NO_VHT80MINUS: extension channel below this channel > + * is not permitted. > */ > enum ieee80211_channel_flags { > - IEEE80211_CHAN_DISABLED = 1<<0, > - IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, > - IEEE80211_CHAN_NO_IBSS = 1<<2, > - IEEE80211_CHAN_RADAR = 1<<3, > - IEEE80211_CHAN_NO_HT40PLUS = 1<<4, > - IEEE80211_CHAN_NO_HT40MINUS = 1<<5, > + IEEE80211_CHAN_DISABLED = 1<<0, > + IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, > + IEEE80211_CHAN_NO_IBSS = 1<<2, > + IEEE80211_CHAN_RADAR = 1<<3, > + IEEE80211_CHAN_NO_HT40PLUS = 1<<4, > + IEEE80211_CHAN_NO_HT40MINUS = 1<<5, > + IEEE80211_CHAN_NO_VHT80PLUS = 1<<6, > + IEEE80211_CHAN_NO_VHT80MINUS = 1<<7, > }; > > #define IEEE80211_CHAN_NO_HT40 \ > (IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) > +#define IEEE80211_CHAN_NO_VHT80 \ > + (IEEE80211_CHAN_NO_VHT80PLUS | IEEE80211_CHAN_NO_VHT80MINUS) > > /** > * struct ieee80211_channel - channel definition > diff --git a/net/wireless/reg.c b/net/wireless/reg.c > index e9a0ac8..dfa8f5d 100644 > --- a/net/wireless/reg.c > +++ b/net/wireless/reg.c > @@ -1048,6 +1048,77 @@ static void reg_process_beacons(struct wiphy > *wiphy) > wiphy_update_beacon_reg(wiphy); > } > > +static bool is_vht80_not_allowed(struct ieee80211_channel *chan) > +{ > + if (!chan) > + return true; > + if (chan->flags & IEEE80211_CHAN_DISABLED) > + return true; > + /* This would happen when regulatory rules disallow VHT80 completely > */ > + if (IEEE80211_CHAN_NO_VHT80 == (chan->flags & > (IEEE80211_CHAN_NO_VHT80))) > + return true; > + return false; > +} > + > +static void reg_process_vht_flags_channel(struct wiphy *wiphy, > + unsigned int chan_idx) > +{ > + struct ieee80211_supported_band *sband; > + struct ieee80211_channel *channel; > + struct ieee80211_channel *channel_before = NULL, *channel_after = > NULL; > + unsigned int i; > + > + assert_cfg80211_lock(); > + > + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; > + BUG_ON(chan_idx >= sband->n_channels); > + channel = &sband->channels[chan_idx]; > + > + if (is_vht80_not_allowed(channel)) { > + channel->flags |= IEEE80211_CHAN_NO_VHT80; > + return; > + } > + > + /* > + * We need to ensure the extension channels exist to > + * be able to use VHT80- or VHT80+, this finds them (or not) > + */ > + for (i = 0; i < sband->n_channels; i++) { > + struct ieee80211_channel *c = &sband->channels[i]; > + if (c->center_freq == (channel->center_freq - 40)) > + channel_before = c; > + if (c->center_freq == (channel->center_freq + 40)) > + channel_after = c; > + } > + > + /* > + * Please note that this assumes target bandwidth is 40 MHz, > + * if that ever changes we also need to change the below logic > + * to include that as well. > + */ > + if (is_vht80_not_allowed(channel_before)) > + channel->flags |= IEEE80211_CHAN_NO_VHT80MINUS; > + else > + channel->flags &= ~IEEE80211_CHAN_NO_VHT80MINUS; > + > + if (is_vht80_not_allowed(channel_after)) > + channel->flags |= IEEE80211_CHAN_NO_VHT80PLUS; > + else > + channel->flags &= ~IEEE80211_CHAN_NO_VHT80PLUS; > +} > + > +static void reg_process_vht_flags(struct wiphy *wiphy) > +{ > + unsigned int i; > + struct ieee80211_supported_band *sband; > + > + BUG_ON(!wiphy->bands[IEEE80211_BAND_5GHZ]); > + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; > + > + for (i = 0; i < sband->n_channels; i++) > + reg_process_vht_flags_channel(wiphy, i); > +} > + > static bool is_ht40_not_allowed(struct ieee80211_channel *chan) > { > if (!chan) > @@ -1154,6 +1225,7 @@ static void wiphy_update_regulatory(struct wiphy > *wiphy, > > reg_process_beacons(wiphy); > reg_process_ht_flags(wiphy); > + reg_process_vht_flags(wiphy); > if (wiphy->reg_notifier) > wiphy->reg_notifier(wiphy, last_request); > } > > -- > To unsubscribe from this list: send the line "unsubscribe linux-wireless" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-22 17:57 ` Johannes Berg @ 2012-02-22 18:57 ` Johannes Berg 2012-02-24 5:25 ` [RFCv2] " Mahesh 0 siblings, 1 reply; 15+ messages in thread From: Johannes Berg @ 2012-02-22 18:57 UTC (permalink / raw) To: Mahesh; +Cc: linville, linux-wireless On Wed, 2012-02-22 at 18:57 +0100, Johannes Berg wrote: > On Wed, 2012-02-22 at 23:21 +0530, Mahesh wrote: > > This change is for marking 80Mhz bandwidth supported channel flags in > > 5Gig band. > > This patch is not only completely mangled, it also neglects to actually > support this in the regdb etc. What's the point? I should elaborate. Something like this code is needed, but right now the regulatory database contains things like (5150 - 5350 @ 40), (N/A, 100 mW), NO-OUTDOOR, DFS which means at most 40 MHz can be used. In your patch, you don't even check this maximum bandwidth, which is a bug, but even if you did the database would have to be changed. Also, we probably really need to introduce handling of spectral power limits to make this worthwhile? johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-22 18:57 ` Johannes Berg @ 2012-02-24 5:25 ` Mahesh 2012-02-24 5:43 ` Adrian Chadd 2012-02-24 7:55 ` Johannes Berg 0 siblings, 2 replies; 15+ messages in thread From: Mahesh @ 2012-02-24 5:25 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless On 02/23/2012 12:27 AM, Johannes Berg wrote: > On Wed, 2012-02-22 at 18:57 +0100, Johannes Berg wrote: >> On Wed, 2012-02-22 at 23:21 +0530, Mahesh wrote: >>> This change is for marking 80Mhz bandwidth supported channel flags in >>> 5Gig band. >> >> This patch is not only completely mangled, it also neglects to actually >> support this in the regdb etc. What's the point? > > I should elaborate. Something like this code is needed, but right now > the regulatory database contains things like > > (5150 - 5350 @ 40), (N/A, 100 mW), NO-OUTDOOR, DFS > > which means at most 40 MHz can be used. > > In your patch, you don't even check this maximum bandwidth, which is a > bug, but even if you did the database would have to be changed. > > Also, we probably really need to introduce handling of spectral power > limits to make this worthwhile? > > johannes > Agree. we will work towards updating regulatory database with 80Mhz bandwidth in 5Gig band. I had modified code to check maximum bandwidth as well. Please find the updated change below. Signed-of-by: Mahesh Palivela (maheshp@posedge.com) --- include/net/cfg80211.h | 20 ++++++++--- net/wireless/reg.c | 87 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 97 insertions(+), 10 deletions(-) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 755a770..ddc0524 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -93,18 +93,26 @@ enum ieee80211_band { * is not permitted. * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel * is not permitted. + * @IEEE80211_CHAN_NO_VHT80PLUS: extension channel above this channel + * is not permitted. + * @IEEE80211_CHAN_NO_VHT80MINUS: extension channel below this channel + * is not permitted. */ enum ieee80211_channel_flags { - IEEE80211_CHAN_DISABLED = 1<<0, - IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, - IEEE80211_CHAN_NO_IBSS = 1<<2, - IEEE80211_CHAN_RADAR = 1<<3, - IEEE80211_CHAN_NO_HT40PLUS = 1<<4, - IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + IEEE80211_CHAN_DISABLED = 1<<0, + IEEE80211_CHAN_PASSIVE_SCAN = 1<<1, + IEEE80211_CHAN_NO_IBSS = 1<<2, + IEEE80211_CHAN_RADAR = 1<<3, + IEEE80211_CHAN_NO_HT40PLUS = 1<<4, + IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + IEEE80211_CHAN_NO_VHT80PLUS = 1<<6, + IEEE80211_CHAN_NO_VHT80MINUS = 1<<7, }; #define IEEE80211_CHAN_NO_HT40 \ (IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) +#define IEEE80211_CHAN_NO_VHT80 \ + (IEEE80211_CHAN_NO_VHT80PLUS | IEEE80211_CHAN_NO_VHT80MINUS) /** * struct ieee80211_channel - channel definition diff --git a/net/wireless/reg.c b/net/wireless/reg.c index e9a0ac8..c0c905e 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -858,8 +858,11 @@ static void handle_channel(struct wiphy *wiphy, power_rule = ®_rule->power_rule; freq_range = ®_rule->freq_range; - if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) - bw_flags = IEEE80211_CHAN_NO_HT40; + if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) { + bw_flags = IEEE80211_CHAN_NO_HT40 | IEEE80211_CHAN_NO_VHT80; + } else if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(80)) { + bw_flags = IEEE80211_CHAN_NO_VHT80; + } if (last_request->initiator == NL80211_REGDOM_SET_BY_DRIVER && request_wiphy && request_wiphy == wiphy && @@ -1048,6 +1051,77 @@ static void reg_process_beacons(struct wiphy *wiphy) wiphy_update_beacon_reg(wiphy); } +static bool is_vht80_not_allowed(struct ieee80211_channel *chan) +{ + if (!chan) + return true; + if (chan->flags & IEEE80211_CHAN_DISABLED) + return true; + /* This would happen when regulatory rules disallow VHT80 completely */ + if (IEEE80211_CHAN_NO_VHT80 == (chan->flags & (IEEE80211_CHAN_NO_VHT80))) + return true; + return false; +} + +static void reg_process_vht_flags_channel(struct wiphy *wiphy, + unsigned int chan_idx) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *channel; + struct ieee80211_channel *channel_before = NULL, *channel_after = NULL; + unsigned int i; + + assert_cfg80211_lock(); + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + BUG_ON(chan_idx >= sband->n_channels); + channel = &sband->channels[chan_idx]; + + if (is_vht80_not_allowed(channel)) { + channel->flags |= IEEE80211_CHAN_NO_VHT80; + return; + } + + /* + * We need to ensure the extension channels exist to + * be able to use VHT80- or VHT80+, this finds them (or not) + */ + for (i = 0; i < sband->n_channels; i++) { + struct ieee80211_channel *c = &sband->channels[i]; + if (c->center_freq == (channel->center_freq - 40)) + channel_before = c; + if (c->center_freq == (channel->center_freq + 40)) + channel_after = c; + } + + /* + * Please note that this assumes target bandwidth is 40 MHz, + * if that ever changes we also need to change the below logic + * to include that as well. + */ + if (is_vht80_not_allowed(channel_before)) + channel->flags |= IEEE80211_CHAN_NO_VHT80MINUS; + else + channel->flags &= ~IEEE80211_CHAN_NO_VHT80MINUS; + + if (is_vht80_not_allowed(channel_after)) + channel->flags |= IEEE80211_CHAN_NO_VHT80PLUS; + else + channel->flags &= ~IEEE80211_CHAN_NO_VHT80PLUS; +} + +static void reg_process_vht_flags(struct wiphy *wiphy) +{ + unsigned int i; + struct ieee80211_supported_band *sband; + + BUG_ON(!wiphy->bands[IEEE80211_BAND_5GHZ]); + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + + for (i = 0; i < sband->n_channels; i++) + reg_process_vht_flags_channel(wiphy, i); +} + static bool is_ht40_not_allowed(struct ieee80211_channel *chan) { if (!chan) @@ -1154,6 +1228,8 @@ static void wiphy_update_regulatory(struct wiphy *wiphy, reg_process_beacons(wiphy); reg_process_ht_flags(wiphy); + reg_process_vht_flags(wiphy); + if (wiphy->reg_notifier) wiphy->reg_notifier(wiphy, last_request); } @@ -1227,8 +1303,11 @@ static void handle_channel_custom(struct wiphy *wiphy, power_rule = ®_rule->power_rule; freq_range = ®_rule->freq_range; - if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) - bw_flags = IEEE80211_CHAN_NO_HT40; + if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) { + bw_flags = IEEE80211_CHAN_NO_HT40 | IEEE80211_CHAN_NO_VHT80; + } else if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(80)) { + bw_flags = IEEE80211_CHAN_NO_VHT80; + } chan->flags |= map_regdom_flags(reg_rule->flags) | bw_flags; chan->max_antenna_gain = (int) MBI_TO_DBI(power_rule->max_antenna_gain); ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-24 5:25 ` [RFCv2] " Mahesh @ 2012-02-24 5:43 ` Adrian Chadd 2012-02-24 5:48 ` Mahesh 2012-02-24 8:01 ` Johannes Berg 2012-02-24 7:55 ` Johannes Berg 1 sibling, 2 replies; 15+ messages in thread From: Adrian Chadd @ 2012-02-24 5:43 UTC (permalink / raw) To: Mahesh; +Cc: Johannes Berg, linville, linux-wireless Hi, Since what your _actual_ commit is doing is "begin fleshing out 802.11ac support", I suggest someone spark a discussion or two about it first.. adrian ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-24 5:43 ` Adrian Chadd @ 2012-02-24 5:48 ` Mahesh 2012-02-24 8:01 ` Johannes Berg 1 sibling, 0 replies; 15+ messages in thread From: Mahesh @ 2012-02-24 5:48 UTC (permalink / raw) To: Adrian Chadd; +Cc: linux-wireless, Johannes Berg, Chakra Parvathaneni Sure Adrian. we can participate in discussion. Thanks, Mahesh On 02/24/2012 11:13 AM, Adrian Chadd wrote: > Hi, > > Since what your _actual_ commit is doing is "begin fleshing out > 802.11ac support", I suggest someone spark a discussion or two about > it first.. > > > adrian ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-24 5:43 ` Adrian Chadd 2012-02-24 5:48 ` Mahesh @ 2012-02-24 8:01 ` Johannes Berg 1 sibling, 0 replies; 15+ messages in thread From: Johannes Berg @ 2012-02-24 8:01 UTC (permalink / raw) To: Adrian Chadd; +Cc: Mahesh, linville, linux-wireless On Thu, 2012-02-23 at 21:43 -0800, Adrian Chadd wrote: > Hi, > > Since what your _actual_ commit is doing is "begin fleshing out > 802.11ac support", I suggest someone spark a discussion or two about > it first.. Now you did ;-) I think the regulatory stuff is important, but obviously we also need VHT advertising, all the mac80211 (and hostapd) bits to add the IEs in the right places, station capability stuff. Some extensions for bitrate information/rate control will be needed -- maybe we should get started on radiotap VHT extensions also. Then stuff like CSA with wide bandwidth channel switch, VHT transmit power envelope, extended power constraint & quiet channel handling. If anyone wants beamforming, I'm not sure where that needs to be implemented, and MU-MIMO will be interesting as well. I also suspect A-MSDU will become more interesting, and I don't even want to think about VHT-IBSS. johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-24 5:25 ` [RFCv2] " Mahesh 2012-02-24 5:43 ` Adrian Chadd @ 2012-02-24 7:55 ` Johannes Berg 2012-02-24 11:21 ` Mahesh 1 sibling, 1 reply; 15+ messages in thread From: Johannes Berg @ 2012-02-24 7:55 UTC (permalink / raw) To: Mahesh; +Cc: linville, linux-wireless On Fri, 2012-02-24 at 10:55 +0530, Mahesh wrote: > Agree. we will work towards updating regulatory database with 80Mhz > bandwidth in 5Gig band. I had modified code to check maximum bandwidth > as well. Please find the updated change below. > - if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) > - bw_flags = IEEE80211_CHAN_NO_HT40; > + if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) { > + bw_flags = IEEE80211_CHAN_NO_HT40 | IEEE80211_CHAN_NO_VHT80; > + } else if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(80)) { > + bw_flags = IEEE80211_CHAN_NO_VHT80; > + } no braces needed Also this will always be true now, so the patch isn't very useful right now? > - if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) > - bw_flags = IEEE80211_CHAN_NO_HT40; > + if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(40)) { > + bw_flags = IEEE80211_CHAN_NO_HT40 | IEEE80211_CHAN_NO_VHT80; > + } else if (freq_range->max_bandwidth_khz < MHZ_TO_KHZ(80)) { > + bw_flags = IEEE80211_CHAN_NO_VHT80; > + } Seems some refactoring could be useful since this is duplicated? johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-24 7:55 ` Johannes Berg @ 2012-02-24 11:21 ` Mahesh 2012-02-25 19:22 ` Adrian Chadd 0 siblings, 1 reply; 15+ messages in thread From: Mahesh @ 2012-02-24 11:21 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Chakra Parvathaneni On 02/24/2012 01:25 PM, Johannes Berg wrote: > On Fri, 2012-02-24 at 10:55 +0530, Mahesh wrote: > >> Agree. we will work towards updating regulatory database with 80Mhz >> bandwidth in 5Gig band. I had modified code to check maximum bandwidth >> as well. Please find the updated change below. > >> - if (freq_range->max_bandwidth_khz< MHZ_TO_KHZ(40)) >> - bw_flags = IEEE80211_CHAN_NO_HT40; >> + if (freq_range->max_bandwidth_khz< MHZ_TO_KHZ(40)) { >> + bw_flags = IEEE80211_CHAN_NO_HT40 | IEEE80211_CHAN_NO_VHT80; >> + } else if (freq_range->max_bandwidth_khz< MHZ_TO_KHZ(80)) { >> + bw_flags = IEEE80211_CHAN_NO_VHT80; >> + } > > no braces needed > > Also this will always be true now, so the patch isn't very useful right > now? True. But once reg database reflects 80MHz BW, we need it. Anyways its part of new feature. Not a bug fix. > > >> - if (freq_range->max_bandwidth_khz< MHZ_TO_KHZ(40)) >> - bw_flags = IEEE80211_CHAN_NO_HT40; >> + if (freq_range->max_bandwidth_khz< MHZ_TO_KHZ(40)) { >> + bw_flags = IEEE80211_CHAN_NO_HT40 | IEEE80211_CHAN_NO_VHT80; >> + } else if (freq_range->max_bandwidth_khz< MHZ_TO_KHZ(80)) { >> + bw_flags = IEEE80211_CHAN_NO_VHT80; >> + } > > Seems some refactoring could be useful since this is duplicated? May be a macro? > > johannes > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-24 11:21 ` Mahesh @ 2012-02-25 19:22 ` Adrian Chadd 2012-02-25 21:30 ` Johannes Berg 0 siblings, 1 reply; 15+ messages in thread From: Adrian Chadd @ 2012-02-25 19:22 UTC (permalink / raw) To: Mahesh; +Cc: Johannes Berg, linville, linux-wireless, Chakra Parvathaneni .. and this doesn't yet address VHT160, which is part of the 11ac spec too. I think it's worth having a bit more of a total, overall architecture discussion about what 11ac support -should- look like before bits are comitted, so you don't have to go and change them later (and possibly break some internal company drivers whilst doing so.) So - what else is likely needed for the upcoming 11ac standard? Disclaimer: I'm speaking from my personal opinion rather than that of Qualcomm Atheros. adrian ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFCv2] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band 2012-02-25 19:22 ` Adrian Chadd @ 2012-02-25 21:30 ` Johannes Berg [not found] ` <eab3dfdc8ebc87ec08ca64db9f237d90@posedge.com> 0 siblings, 1 reply; 15+ messages in thread From: Johannes Berg @ 2012-02-25 21:30 UTC (permalink / raw) To: Adrian Chadd; +Cc: Mahesh, linville, linux-wireless, Chakra Parvathaneni On Sat, 2012-02-25 at 11:22 -0800, Adrian Chadd wrote: > .. and this doesn't yet address VHT160, which is part of the 11ac spec too. > > I think it's worth having a bit more of a total, overall architecture > discussion about what 11ac support -should- look like before bits are > comitted, so you don't have to go and change them later (and possibly > break some internal company drivers whilst doing so.) Not like I care about that at all ... we change things all the time and break drivers in the process. Is it even feasible to have non-upstream drivers on the current wireless stack? I'd think you'd have to dedicate one person full time to following our mac80211 changes ;-) > So - what else is likely needed for the upcoming 11ac standard? Well so obviously we need things like VHT capability stuff (advertising, in scans, in assoc, for AP/GO mode in station info). I suspect you're talking only about the regulatory/channel stuff? Mostly I'm confused about the split channel thing there but I suppose regulatory-wise it's just like using two channels at the same time. > Disclaimer: I'm speaking from my personal opinion rather than that of > Qualcomm Atheros. Does anyone here have an "official opinion"? I doubt it :) johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
[parent not found: <eab3dfdc8ebc87ec08ca64db9f237d90@posedge.com>]
* Re: 802.11ac support [not found] ` <eab3dfdc8ebc87ec08ca64db9f237d90@posedge.com> @ 2012-04-03 12:06 ` Johannes Berg 2012-04-03 12:11 ` Johannes Berg 2012-04-05 4:21 ` Mahesh 0 siblings, 2 replies; 15+ messages in thread From: Johannes Berg @ 2012-04-03 12:06 UTC (permalink / raw) To: Mahesh; +Cc: linville, linux-wireless, Chakra Parvathaneni On Mon, 2012-04-02 at 14:07 +0530, Mahesh wrote: > I had analysed mac80211 code to see what changes are required for 11ac > support. Attached word doc describes mac80211 modules in detail and last > section describing what changes we need for 11ac. This is a proposal. > Please review and let me know your opinion. You really shouldn't try to send word documents to the list, they won't arrive anyway. Also, it's bad form to send out documents that say "confidential" all over them ... Most people also probably don't care about your analysis of what mac80211 already does. In any case, here's my list of things I think will/may need to be done for 11ac in the stack: * extend regulatory framework (cfg80211) * advertise VHT capabilities (nl80211/cfg80211/mac80211 & each driver) * advertise VHT in scan (mac80211) * advertise VHT in assoc req (mac80211) * advertise VHT in P2P probe responses (wpa_supplicant) * advertise VHT in AP/GO mode beacons/probe responses (wpa_supplicant/hostapd) * handle per-station VHT capa (mac80211, wpa_s) * extended CSA (mac80211) * VHT transmit power envelope/extended power constraint (mac80211) * quiet channels? * HT/VHT basic rate handling? * neighbor reports? * beamforming action frame support? (mac80211) johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 802.11ac support 2012-04-03 12:06 ` 802.11ac support Johannes Berg @ 2012-04-03 12:11 ` Johannes Berg 2012-04-05 4:21 ` Mahesh 1 sibling, 0 replies; 15+ messages in thread From: Johannes Berg @ 2012-04-03 12:11 UTC (permalink / raw) To: Mahesh; +Cc: linville, linux-wireless, Chakra Parvathaneni On Tue, 2012-04-03 at 14:06 +0200, Johannes Berg wrote: > In any case, here's my list of things I think will/may need to be done > for 11ac in the stack: [...] It'd also be nice to have iw parse the VHT IEs properly, completely forgot about that (but it's really easy) johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 802.11ac support 2012-04-03 12:06 ` 802.11ac support Johannes Berg 2012-04-03 12:11 ` Johannes Berg @ 2012-04-05 4:21 ` Mahesh 2012-04-05 14:06 ` Johannes Berg 1 sibling, 1 reply; 15+ messages in thread From: Mahesh @ 2012-04-05 4:21 UTC (permalink / raw) To: Johannes Berg; +Cc: linville, linux-wireless, Chakra Parvathaneni On 04/03/2012 05:36 PM, Johannes Berg wrote: > On Mon, 2012-04-02 at 14:07 +0530, Mahesh wrote: > >> I had analysed mac80211 code to see what changes are required for 11ac >> support. Attached word doc describes mac80211 modules in detail and last >> section describing what changes we need for 11ac. This is a proposal. >> Please review and let me know your opinion. > You really shouldn't try to send word documents to the list, they won't > arrive anyway. Also, it's bad form to send out documents that say > "confidential" all over them ... > Most people also probably don't care about your analysis of what > mac80211 already does. > > In any case, here's my list of things I think will/may need to be done > for 11ac in the stack: > * extend regulatory framework (cfg80211) > * advertise VHT capabilities (nl80211/cfg80211/mac80211& each driver) > * advertise VHT in scan (mac80211) > * advertise VHT in assoc req (mac80211) > * advertise VHT in P2P probe responses (wpa_supplicant) > * advertise VHT in AP/GO mode beacons/probe responses > (wpa_supplicant/hostapd) > * handle per-station VHT capa (mac80211, wpa_s) > * extended CSA (mac80211) > * VHT transmit power envelope/extended power constraint (mac80211) > * quiet channels? > * HT/VHT basic rate handling? > * neighbor reports? > * beamforming action frame support? (mac80211) > > johannes > Thanks for listing the 11ac requirements. will work on those and post my updates. ~Mahesh ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: 802.11ac support 2012-04-05 4:21 ` Mahesh @ 2012-04-05 14:06 ` Johannes Berg 0 siblings, 0 replies; 15+ messages in thread From: Johannes Berg @ 2012-04-05 14:06 UTC (permalink / raw) To: Mahesh; +Cc: linville, linux-wireless, Chakra Parvathaneni On Thu, 2012-04-05 at 09:51 +0530, Mahesh wrote: > > In any case, here's my list of things I think will/may need to be done > > for 11ac in the stack: > > * extend regulatory framework (cfg80211) > > * advertise VHT capabilities (nl80211/cfg80211/mac80211& each driver) > > * advertise VHT in scan (mac80211) > > * advertise VHT in assoc req (mac80211) > > * advertise VHT in P2P probe responses (wpa_supplicant) > > * advertise VHT in AP/GO mode beacons/probe responses > > (wpa_supplicant/hostapd) > > * handle per-station VHT capa (mac80211, wpa_s) > > * extended CSA (mac80211) > > * VHT transmit power envelope/extended power constraint (mac80211) > > * quiet channels? > > * HT/VHT basic rate handling? > > * neighbor reports? > > * beamforming action frame support? (mac80211) > Thanks for listing the 11ac requirements. will work on those and post my > updates. When you start working on them, I suggest roughly the list in the order above. Regulatory might not be the first thing though. If you do though, please don't do everything and then post all patches at once -- each of those items should be self-contained enough to post separately. This helps synchronise with others who might be working on it and also helps since we can review the code and suggest corrections if needed. Let me know if you need more info! Thanks, johannes ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2012-04-05 14:06 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-22 17:51 [RFC] cfg80211: 80Mhz Bandwidth channel flags in 5Gig band Mahesh
2012-02-22 17:57 ` Johannes Berg
2012-02-22 18:57 ` Johannes Berg
2012-02-24 5:25 ` [RFCv2] " Mahesh
2012-02-24 5:43 ` Adrian Chadd
2012-02-24 5:48 ` Mahesh
2012-02-24 8:01 ` Johannes Berg
2012-02-24 7:55 ` Johannes Berg
2012-02-24 11:21 ` Mahesh
2012-02-25 19:22 ` Adrian Chadd
2012-02-25 21:30 ` Johannes Berg
[not found] ` <eab3dfdc8ebc87ec08ca64db9f237d90@posedge.com>
2012-04-03 12:06 ` 802.11ac support Johannes Berg
2012-04-03 12:11 ` Johannes Berg
2012-04-05 4:21 ` Mahesh
2012-04-05 14:06 ` Johannes Berg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).