Lines Matching refs:chandef

23 void cfg80211_chandef_create(struct cfg80211_chan_def *chandef,  in cfg80211_chandef_create()  argument
30 chandef->chan = chan; in cfg80211_chandef_create()
31 chandef->freq1_offset = chan->freq_offset; in cfg80211_chandef_create()
32 chandef->center_freq2 = 0; in cfg80211_chandef_create()
33 chandef->edmg.bw_config = 0; in cfg80211_chandef_create()
34 chandef->edmg.channels = 0; in cfg80211_chandef_create()
38 chandef->width = NL80211_CHAN_WIDTH_20_NOHT; in cfg80211_chandef_create()
39 chandef->center_freq1 = chan->center_freq; in cfg80211_chandef_create()
42 chandef->width = NL80211_CHAN_WIDTH_20; in cfg80211_chandef_create()
43 chandef->center_freq1 = chan->center_freq; in cfg80211_chandef_create()
46 chandef->width = NL80211_CHAN_WIDTH_40; in cfg80211_chandef_create()
47 chandef->center_freq1 = chan->center_freq + 10; in cfg80211_chandef_create()
50 chandef->width = NL80211_CHAN_WIDTH_40; in cfg80211_chandef_create()
51 chandef->center_freq1 = chan->center_freq - 10; in cfg80211_chandef_create()
59 static bool cfg80211_edmg_chandef_valid(const struct cfg80211_chan_def *chandef) in cfg80211_edmg_chandef_valid() argument
66 if (!chandef->edmg.channels || !chandef->edmg.bw_config) in cfg80211_edmg_chandef_valid()
69 if (!cfg80211_valid_60g_freq(chandef->chan->center_freq)) in cfg80211_edmg_chandef_valid()
73 if (chandef->edmg.channels & BIT(i)) { in cfg80211_edmg_chandef_valid()
86 switch (chandef->edmg.bw_config) { in cfg80211_edmg_chandef_valid()
117 switch (chandef->edmg.bw_config) { in cfg80211_edmg_chandef_valid()
196 bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef) in cfg80211_chandef_valid() argument
201 if (!chandef->chan) in cfg80211_chandef_valid()
204 if (chandef->freq1_offset >= 1000) in cfg80211_chandef_valid()
207 control_freq = chandef->chan->center_freq; in cfg80211_chandef_valid()
209 switch (chandef->width) { in cfg80211_chandef_valid()
214 if (ieee80211_chandef_to_khz(chandef) != in cfg80211_chandef_valid()
215 ieee80211_channel_to_khz(chandef->chan)) in cfg80211_chandef_valid()
217 if (chandef->center_freq2) in cfg80211_chandef_valid()
225 if (chandef->chan->band != NL80211_BAND_S1GHZ) in cfg80211_chandef_valid()
228 control_freq = ieee80211_channel_to_khz(chandef->chan); in cfg80211_chandef_valid()
229 oper_freq = ieee80211_chandef_to_khz(chandef); in cfg80211_chandef_valid()
232 chandef->chan)); in cfg80211_chandef_valid()
233 oper_width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_valid()
237 if (chandef->center_freq2) in cfg80211_chandef_valid()
249 if (chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
250 chandef->center_freq1 != control_freq - 10) in cfg80211_chandef_valid()
252 if (chandef->center_freq2) in cfg80211_chandef_valid()
256 if (chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
257 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
258 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
259 chandef->center_freq1 != control_freq - 30) in cfg80211_chandef_valid()
261 if (!chandef->center_freq2) in cfg80211_chandef_valid()
264 if (chandef->center_freq1 - chandef->center_freq2 == 80 || in cfg80211_chandef_valid()
265 chandef->center_freq2 - chandef->center_freq1 == 80) in cfg80211_chandef_valid()
269 if (chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
270 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
271 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
272 chandef->center_freq1 != control_freq - 30) in cfg80211_chandef_valid()
274 if (chandef->center_freq2) in cfg80211_chandef_valid()
278 if (chandef->center_freq1 != control_freq + 70 && in cfg80211_chandef_valid()
279 chandef->center_freq1 != control_freq + 50 && in cfg80211_chandef_valid()
280 chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
281 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
282 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
283 chandef->center_freq1 != control_freq - 30 && in cfg80211_chandef_valid()
284 chandef->center_freq1 != control_freq - 50 && in cfg80211_chandef_valid()
285 chandef->center_freq1 != control_freq - 70) in cfg80211_chandef_valid()
287 if (chandef->center_freq2) in cfg80211_chandef_valid()
295 if (chandef->center_freq1 == 2484 && in cfg80211_chandef_valid()
296 chandef->width != NL80211_CHAN_WIDTH_20_NOHT) in cfg80211_chandef_valid()
299 if (cfg80211_chandef_is_edmg(chandef) && in cfg80211_chandef_valid()
300 !cfg80211_edmg_chandef_valid(chandef)) in cfg80211_chandef_valid()
418 const struct cfg80211_chan_def *chandef, in cfg80211_set_dfs_state() argument
423 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_set_dfs_state()
426 width = cfg80211_chandef_get_width(chandef); in cfg80211_set_dfs_state()
430 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq1, in cfg80211_set_dfs_state()
433 if (!chandef->center_freq2) in cfg80211_set_dfs_state()
435 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq2, in cfg80211_set_dfs_state()
490 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_dfs_required() argument
496 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_required()
504 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_required()
509 ieee80211_chandef_to_khz(chandef), in cfg80211_chandef_dfs_required()
514 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
516 if (!chandef->center_freq2) in cfg80211_chandef_dfs_required()
520 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_required()
525 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
584 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_usable() argument
589 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_usable()
592 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_usable()
597 MHZ_TO_KHZ(chandef->center_freq1), in cfg80211_chandef_dfs_usable()
603 switch (chandef->width) { in cfg80211_chandef_dfs_usable()
605 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_usable()
607 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_usable()
613 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_usable()
624 bool cfg80211_is_sub_chan(struct cfg80211_chan_def *chandef, in cfg80211_is_sub_chan() argument
630 if (chandef->chan->center_freq == chan->center_freq) in cfg80211_is_sub_chan()
633 width = cfg80211_chandef_get_width(chandef); in cfg80211_is_sub_chan()
637 for (freq = chandef->center_freq1 - width / 2 + 10; in cfg80211_is_sub_chan()
638 freq <= chandef->center_freq1 + width / 2 - 10; freq += 20) { in cfg80211_is_sub_chan()
643 if (!chandef->center_freq2) in cfg80211_is_sub_chan()
646 for (freq = chandef->center_freq2 - width / 2 + 10; in cfg80211_is_sub_chan()
647 freq <= chandef->center_freq2 + width / 2 - 10; freq += 20) { in cfg80211_is_sub_chan()
661 if (!wdev->chandef.chan) in cfg80211_beaconing_iface_active()
705 if (cfg80211_is_sub_chan(&wdev->chandef, chan)) { in cfg80211_is_wiphy_oper_chan()
773 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_available() argument
778 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_available()
781 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_available()
786 MHZ_TO_KHZ(chandef->center_freq1), in cfg80211_chandef_dfs_available()
793 switch (chandef->width) { in cfg80211_chandef_dfs_available()
795 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_available()
797 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_available()
801 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_available()
839 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_cac_time() argument
844 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_cac_time()
847 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_cac_time()
852 MHZ_TO_KHZ(chandef->center_freq1), in cfg80211_chandef_dfs_cac_time()
855 if (!chandef->center_freq2) in cfg80211_chandef_dfs_cac_time()
859 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_cac_time()
938 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_usable() argument
947 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_usable()
950 ht_cap = &wiphy->bands[chandef->chan->band]->ht_cap; in cfg80211_chandef_usable()
951 vht_cap = &wiphy->bands[chandef->chan->band]->vht_cap; in cfg80211_chandef_usable()
952 edmg_cap = &wiphy->bands[chandef->chan->band]->edmg_cap; in cfg80211_chandef_usable()
956 chandef->edmg.channels, in cfg80211_chandef_usable()
957 chandef->edmg.bw_config, in cfg80211_chandef_usable()
958 chandef->chan->hw_value, in cfg80211_chandef_usable()
962 control_freq = chandef->chan->center_freq; in cfg80211_chandef_usable()
964 switch (chandef->width) { in cfg80211_chandef_usable()
989 chandef->chan->band != NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
998 if (chandef->chan->band == NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1005 if (chandef->center_freq1 < control_freq && in cfg80211_chandef_usable()
1006 chandef->chan->flags & IEEE80211_CHAN_NO_HT40MINUS) in cfg80211_chandef_usable()
1008 if (chandef->center_freq1 > control_freq && in cfg80211_chandef_usable()
1009 chandef->chan->flags & IEEE80211_CHAN_NO_HT40PLUS) in cfg80211_chandef_usable()
1019 if (chandef->chan->band != NL80211_BAND_6GHZ && !support_80_80) in cfg80211_chandef_usable()
1025 if (chandef->chan->band == NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1033 if (chandef->chan->band == NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1068 ieee80211_chandef_to_khz(chandef), in cfg80211_chandef_usable()
1072 if (!chandef->center_freq2) in cfg80211_chandef_usable()
1075 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_usable()
1142 other_chan = wdev->chandef.chan; in cfg80211_ir_permissive_chan()
1182 struct cfg80211_chan_def *chandef, in _cfg80211_reg_can_beacon() argument
1190 trace_cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in _cfg80211_reg_can_beacon()
1195 if (cfg80211_chandef_dfs_required(wiphy, chandef, iftype) > 0 && in _cfg80211_reg_can_beacon()
1196 cfg80211_chandef_dfs_available(wiphy, chandef)) { in _cfg80211_reg_can_beacon()
1201 res = cfg80211_chandef_usable(wiphy, chandef, prohibited_flags); in _cfg80211_reg_can_beacon()
1208 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon() argument
1211 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, true); in cfg80211_reg_can_beacon()
1216 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon_relax() argument
1230 chandef->chan); in cfg80211_reg_can_beacon_relax()
1232 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in cfg80211_reg_can_beacon_relax()
1237 struct cfg80211_chan_def *chandef) in cfg80211_set_monitor_channel() argument
1244 return rdev_set_monitor_channel(rdev, chandef); in cfg80211_set_monitor_channel()
1275 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1290 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
1292 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1294 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
1298 &wdev->chandef, in cfg80211_get_chan_state()
1302 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1307 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
1311 &wdev->chandef, in cfg80211_get_chan_state()
1315 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1319 if (wdev->chandef.chan) { in cfg80211_get_chan_state()
1320 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()