Lines Matching refs:chandef

22 void cfg80211_chandef_create(struct cfg80211_chan_def *chandef,  in cfg80211_chandef_create()  argument
29 chandef->chan = chan; in cfg80211_chandef_create()
30 chandef->center_freq2 = 0; in cfg80211_chandef_create()
31 chandef->edmg.bw_config = 0; in cfg80211_chandef_create()
32 chandef->edmg.channels = 0; in cfg80211_chandef_create()
36 chandef->width = NL80211_CHAN_WIDTH_20_NOHT; in cfg80211_chandef_create()
37 chandef->center_freq1 = chan->center_freq; in cfg80211_chandef_create()
40 chandef->width = NL80211_CHAN_WIDTH_20; in cfg80211_chandef_create()
41 chandef->center_freq1 = chan->center_freq; in cfg80211_chandef_create()
44 chandef->width = NL80211_CHAN_WIDTH_40; in cfg80211_chandef_create()
45 chandef->center_freq1 = chan->center_freq + 10; in cfg80211_chandef_create()
48 chandef->width = NL80211_CHAN_WIDTH_40; in cfg80211_chandef_create()
49 chandef->center_freq1 = chan->center_freq - 10; in cfg80211_chandef_create()
57 static bool cfg80211_edmg_chandef_valid(const struct cfg80211_chan_def *chandef) in cfg80211_edmg_chandef_valid() argument
64 if (!chandef->edmg.channels || !chandef->edmg.bw_config) in cfg80211_edmg_chandef_valid()
67 if (!cfg80211_valid_60g_freq(chandef->chan->center_freq)) in cfg80211_edmg_chandef_valid()
71 if (chandef->edmg.channels & BIT(i)) { in cfg80211_edmg_chandef_valid()
84 switch (chandef->edmg.bw_config) { in cfg80211_edmg_chandef_valid()
115 switch (chandef->edmg.bw_config) { in cfg80211_edmg_chandef_valid()
142 bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef) in cfg80211_chandef_valid() argument
146 if (!chandef->chan) in cfg80211_chandef_valid()
149 control_freq = chandef->chan->center_freq; in cfg80211_chandef_valid()
151 switch (chandef->width) { in cfg80211_chandef_valid()
156 if (chandef->center_freq1 != control_freq) in cfg80211_chandef_valid()
158 if (chandef->center_freq2) in cfg80211_chandef_valid()
162 if (chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
163 chandef->center_freq1 != control_freq - 10) in cfg80211_chandef_valid()
165 if (chandef->center_freq2) in cfg80211_chandef_valid()
169 if (chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
170 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
171 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
172 chandef->center_freq1 != control_freq - 30) in cfg80211_chandef_valid()
174 if (!chandef->center_freq2) in cfg80211_chandef_valid()
177 if (chandef->center_freq1 - chandef->center_freq2 == 80 || in cfg80211_chandef_valid()
178 chandef->center_freq2 - chandef->center_freq1 == 80) in cfg80211_chandef_valid()
182 if (chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
183 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
184 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
185 chandef->center_freq1 != control_freq - 30) in cfg80211_chandef_valid()
187 if (chandef->center_freq2) in cfg80211_chandef_valid()
191 if (chandef->center_freq1 != control_freq + 70 && in cfg80211_chandef_valid()
192 chandef->center_freq1 != control_freq + 50 && in cfg80211_chandef_valid()
193 chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
194 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
195 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
196 chandef->center_freq1 != control_freq - 30 && in cfg80211_chandef_valid()
197 chandef->center_freq1 != control_freq - 50 && in cfg80211_chandef_valid()
198 chandef->center_freq1 != control_freq - 70) in cfg80211_chandef_valid()
200 if (chandef->center_freq2) in cfg80211_chandef_valid()
208 if (chandef->center_freq1 == 2484 && in cfg80211_chandef_valid()
209 chandef->width != NL80211_CHAN_WIDTH_20_NOHT) in cfg80211_chandef_valid()
212 if (cfg80211_chandef_is_edmg(chandef) && in cfg80211_chandef_valid()
213 !cfg80211_edmg_chandef_valid(chandef)) in cfg80211_chandef_valid()
363 const struct cfg80211_chan_def *chandef, in cfg80211_set_dfs_state() argument
368 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_set_dfs_state()
371 width = cfg80211_chandef_get_width(chandef); in cfg80211_set_dfs_state()
375 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq1, in cfg80211_set_dfs_state()
378 if (!chandef->center_freq2) in cfg80211_set_dfs_state()
380 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq2, in cfg80211_set_dfs_state()
433 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_dfs_required() argument
439 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_required()
447 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_required()
452 chandef->center_freq1, in cfg80211_chandef_dfs_required()
457 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
459 if (!chandef->center_freq2) in cfg80211_chandef_dfs_required()
463 chandef->center_freq2, in cfg80211_chandef_dfs_required()
468 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
527 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_usable() argument
532 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_usable()
535 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_usable()
539 r1 = cfg80211_get_chans_dfs_usable(wiphy, chandef->center_freq1, in cfg80211_chandef_dfs_usable()
545 switch (chandef->width) { in cfg80211_chandef_dfs_usable()
547 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_usable()
549 chandef->center_freq2, in cfg80211_chandef_dfs_usable()
555 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_usable()
566 bool cfg80211_is_sub_chan(struct cfg80211_chan_def *chandef, in cfg80211_is_sub_chan() argument
572 if (chandef->chan->center_freq == chan->center_freq) in cfg80211_is_sub_chan()
575 width = cfg80211_chandef_get_width(chandef); in cfg80211_is_sub_chan()
579 for (freq = chandef->center_freq1 - width / 2 + 10; in cfg80211_is_sub_chan()
580 freq <= chandef->center_freq1 + width / 2 - 10; freq += 20) { in cfg80211_is_sub_chan()
585 if (!chandef->center_freq2) in cfg80211_is_sub_chan()
588 for (freq = chandef->center_freq2 - width / 2 + 10; in cfg80211_is_sub_chan()
589 freq <= chandef->center_freq2 + width / 2 - 10; freq += 20) { in cfg80211_is_sub_chan()
603 if (!wdev->chandef.chan) in cfg80211_beaconing_iface_active()
647 if (cfg80211_is_sub_chan(&wdev->chandef, chan)) { in cfg80211_is_wiphy_oper_chan()
715 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_available() argument
720 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_available()
723 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_available()
727 r = cfg80211_get_chans_dfs_available(wiphy, chandef->center_freq1, in cfg80211_chandef_dfs_available()
734 switch (chandef->width) { in cfg80211_chandef_dfs_available()
736 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_available()
738 chandef->center_freq2, in cfg80211_chandef_dfs_available()
742 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_available()
780 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_cac_time() argument
785 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_cac_time()
788 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_cac_time()
793 chandef->center_freq1, in cfg80211_chandef_dfs_cac_time()
796 if (!chandef->center_freq2) in cfg80211_chandef_dfs_cac_time()
800 chandef->center_freq2, in cfg80211_chandef_dfs_cac_time()
879 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_usable() argument
887 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_usable()
890 ht_cap = &wiphy->bands[chandef->chan->band]->ht_cap; in cfg80211_chandef_usable()
891 vht_cap = &wiphy->bands[chandef->chan->band]->vht_cap; in cfg80211_chandef_usable()
892 edmg_cap = &wiphy->bands[chandef->chan->band]->edmg_cap; in cfg80211_chandef_usable()
896 chandef->edmg.channels, in cfg80211_chandef_usable()
897 chandef->edmg.bw_config, in cfg80211_chandef_usable()
898 chandef->chan->hw_value, in cfg80211_chandef_usable()
902 control_freq = chandef->chan->center_freq; in cfg80211_chandef_usable()
904 switch (chandef->width) { in cfg80211_chandef_usable()
927 if (chandef->center_freq1 < control_freq && in cfg80211_chandef_usable()
928 chandef->chan->flags & IEEE80211_CHAN_NO_HT40MINUS) in cfg80211_chandef_usable()
930 if (chandef->center_freq1 > control_freq && in cfg80211_chandef_usable()
931 chandef->chan->flags & IEEE80211_CHAN_NO_HT40PLUS) in cfg80211_chandef_usable()
979 if (!cfg80211_secondary_chans_ok(wiphy, chandef->center_freq1, in cfg80211_chandef_usable()
983 if (!chandef->center_freq2) in cfg80211_chandef_usable()
985 return cfg80211_secondary_chans_ok(wiphy, chandef->center_freq2, in cfg80211_chandef_usable()
1052 other_chan = wdev->chandef.chan; in cfg80211_ir_permissive_chan()
1092 struct cfg80211_chan_def *chandef, in _cfg80211_reg_can_beacon() argument
1100 trace_cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in _cfg80211_reg_can_beacon()
1105 if (cfg80211_chandef_dfs_required(wiphy, chandef, iftype) > 0 && in _cfg80211_reg_can_beacon()
1106 cfg80211_chandef_dfs_available(wiphy, chandef)) { in _cfg80211_reg_can_beacon()
1111 res = cfg80211_chandef_usable(wiphy, chandef, prohibited_flags); in _cfg80211_reg_can_beacon()
1118 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon() argument
1121 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, true); in cfg80211_reg_can_beacon()
1126 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon_relax() argument
1140 chandef->chan); in cfg80211_reg_can_beacon_relax()
1142 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in cfg80211_reg_can_beacon_relax()
1147 struct cfg80211_chan_def *chandef) in cfg80211_set_monitor_channel() argument
1154 return rdev_set_monitor_channel(rdev, chandef); in cfg80211_set_monitor_channel()
1185 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1200 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
1202 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1204 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
1208 &wdev->chandef, in cfg80211_get_chan_state()
1212 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1217 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
1221 &wdev->chandef, in cfg80211_get_chan_state()
1225 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
1229 if (wdev->chandef.chan) { in cfg80211_get_chan_state()
1230 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()