Lines Matching refs:chandef
15 void cfg80211_chandef_create(struct cfg80211_chan_def *chandef, in cfg80211_chandef_create() argument
22 chandef->chan = chan; in cfg80211_chandef_create()
23 chandef->center_freq2 = 0; in cfg80211_chandef_create()
27 chandef->width = NL80211_CHAN_WIDTH_20_NOHT; in cfg80211_chandef_create()
28 chandef->center_freq1 = chan->center_freq; in cfg80211_chandef_create()
31 chandef->width = NL80211_CHAN_WIDTH_20; in cfg80211_chandef_create()
32 chandef->center_freq1 = chan->center_freq; in cfg80211_chandef_create()
35 chandef->width = NL80211_CHAN_WIDTH_40; in cfg80211_chandef_create()
36 chandef->center_freq1 = chan->center_freq + 10; in cfg80211_chandef_create()
39 chandef->width = NL80211_CHAN_WIDTH_40; in cfg80211_chandef_create()
40 chandef->center_freq1 = chan->center_freq - 10; in cfg80211_chandef_create()
48 bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef) in cfg80211_chandef_valid() argument
52 if (!chandef->chan) in cfg80211_chandef_valid()
55 control_freq = chandef->chan->center_freq; in cfg80211_chandef_valid()
57 switch (chandef->width) { in cfg80211_chandef_valid()
62 if (chandef->center_freq1 != control_freq) in cfg80211_chandef_valid()
64 if (chandef->center_freq2) in cfg80211_chandef_valid()
68 if (chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
69 chandef->center_freq1 != control_freq - 10) in cfg80211_chandef_valid()
71 if (chandef->center_freq2) in cfg80211_chandef_valid()
75 if (chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
76 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
77 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
78 chandef->center_freq1 != control_freq - 30) in cfg80211_chandef_valid()
80 if (!chandef->center_freq2) in cfg80211_chandef_valid()
83 if (chandef->center_freq1 - chandef->center_freq2 == 80 || in cfg80211_chandef_valid()
84 chandef->center_freq2 - chandef->center_freq1 == 80) in cfg80211_chandef_valid()
88 if (chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
89 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
90 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
91 chandef->center_freq1 != control_freq - 30) in cfg80211_chandef_valid()
93 if (chandef->center_freq2) in cfg80211_chandef_valid()
97 if (chandef->center_freq1 != control_freq + 70 && in cfg80211_chandef_valid()
98 chandef->center_freq1 != control_freq + 50 && in cfg80211_chandef_valid()
99 chandef->center_freq1 != control_freq + 30 && in cfg80211_chandef_valid()
100 chandef->center_freq1 != control_freq + 10 && in cfg80211_chandef_valid()
101 chandef->center_freq1 != control_freq - 10 && in cfg80211_chandef_valid()
102 chandef->center_freq1 != control_freq - 30 && in cfg80211_chandef_valid()
103 chandef->center_freq1 != control_freq - 50 && in cfg80211_chandef_valid()
104 chandef->center_freq1 != control_freq - 70) in cfg80211_chandef_valid()
106 if (chandef->center_freq2) in cfg80211_chandef_valid()
260 const struct cfg80211_chan_def *chandef, in cfg80211_set_dfs_state() argument
265 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_set_dfs_state()
268 width = cfg80211_chandef_get_width(chandef); in cfg80211_set_dfs_state()
272 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq1, in cfg80211_set_dfs_state()
275 if (!chandef->center_freq2) in cfg80211_set_dfs_state()
277 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq2, in cfg80211_set_dfs_state()
330 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_dfs_required() argument
336 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_required()
344 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_required()
349 chandef->center_freq1, in cfg80211_chandef_dfs_required()
354 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
356 if (!chandef->center_freq2) in cfg80211_chandef_dfs_required()
360 chandef->center_freq2, in cfg80211_chandef_dfs_required()
365 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
423 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_usable() argument
428 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_usable()
431 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_usable()
435 r1 = cfg80211_get_chans_dfs_usable(wiphy, chandef->center_freq1, in cfg80211_chandef_dfs_usable()
441 switch (chandef->width) { in cfg80211_chandef_dfs_usable()
443 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_usable()
445 chandef->center_freq2, in cfg80211_chandef_dfs_usable()
451 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_usable()
491 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_available() argument
496 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_available()
499 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_available()
503 r = cfg80211_get_chans_dfs_available(wiphy, chandef->center_freq1, in cfg80211_chandef_dfs_available()
510 switch (chandef->width) { in cfg80211_chandef_dfs_available()
512 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_available()
514 chandef->center_freq2, in cfg80211_chandef_dfs_available()
517 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_available()
555 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_cac_time() argument
560 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_cac_time()
563 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_cac_time()
568 chandef->center_freq1, in cfg80211_chandef_dfs_cac_time()
571 if (!chandef->center_freq2) in cfg80211_chandef_dfs_cac_time()
575 chandef->center_freq2, in cfg80211_chandef_dfs_cac_time()
601 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_usable() argument
608 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_usable()
611 ht_cap = &wiphy->bands[chandef->chan->band]->ht_cap; in cfg80211_chandef_usable()
612 vht_cap = &wiphy->bands[chandef->chan->band]->vht_cap; in cfg80211_chandef_usable()
614 control_freq = chandef->chan->center_freq; in cfg80211_chandef_usable()
616 switch (chandef->width) { in cfg80211_chandef_usable()
638 if (chandef->center_freq1 < control_freq && in cfg80211_chandef_usable()
639 chandef->chan->flags & IEEE80211_CHAN_NO_HT40MINUS) in cfg80211_chandef_usable()
641 if (chandef->center_freq1 > control_freq && in cfg80211_chandef_usable()
642 chandef->chan->flags & IEEE80211_CHAN_NO_HT40PLUS) in cfg80211_chandef_usable()
689 if (!cfg80211_secondary_chans_ok(wiphy, chandef->center_freq1, in cfg80211_chandef_usable()
693 if (!chandef->center_freq2) in cfg80211_chandef_usable()
695 return cfg80211_secondary_chans_ok(wiphy, chandef->center_freq2, in cfg80211_chandef_usable()
762 other_chan = wdev->chandef.chan; in cfg80211_ir_permissive_chan()
801 struct cfg80211_chan_def *chandef, in _cfg80211_reg_can_beacon() argument
809 trace_cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in _cfg80211_reg_can_beacon()
814 if (cfg80211_chandef_dfs_required(wiphy, chandef, iftype) > 0 && in _cfg80211_reg_can_beacon()
815 cfg80211_chandef_dfs_available(wiphy, chandef)) { in _cfg80211_reg_can_beacon()
820 res = cfg80211_chandef_usable(wiphy, chandef, prohibited_flags); in _cfg80211_reg_can_beacon()
827 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon() argument
830 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, true); in cfg80211_reg_can_beacon()
835 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon_relax() argument
849 chandef->chan); in cfg80211_reg_can_beacon_relax()
851 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in cfg80211_reg_can_beacon_relax()
856 struct cfg80211_chan_def *chandef) in cfg80211_set_monitor_channel() argument
863 return rdev_set_monitor_channel(rdev, chandef); in cfg80211_set_monitor_channel()
894 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
909 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
911 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
913 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
917 &wdev->chandef, in cfg80211_get_chan_state()
921 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
926 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()
930 &wdev->chandef, in cfg80211_get_chan_state()
934 *radar_detect |= BIT(wdev->chandef.width); in cfg80211_get_chan_state()
938 if (wdev->chandef.chan) { in cfg80211_get_chan_state()
939 *chan = wdev->chandef.chan; in cfg80211_get_chan_state()