• Home
  • Raw
  • Download

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()
199 bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef) in cfg80211_chandef_valid() argument
204 if (!chandef->chan) in cfg80211_chandef_valid()
207 if (chandef->freq1_offset >= 1000) in cfg80211_chandef_valid()
210 control_freq = chandef->chan->center_freq; in cfg80211_chandef_valid()
212 switch (chandef->width) { in cfg80211_chandef_valid()
217 if (ieee80211_chandef_to_khz(chandef) != in cfg80211_chandef_valid()
218 ieee80211_channel_to_khz(chandef->chan)) in cfg80211_chandef_valid()
220 if (chandef->center_freq2) in cfg80211_chandef_valid()
228 if (chandef->chan->band != NL80211_BAND_S1GHZ) in cfg80211_chandef_valid()
231 control_freq = ieee80211_channel_to_khz(chandef->chan); in cfg80211_chandef_valid()
232 oper_freq = ieee80211_chandef_to_khz(chandef); in cfg80211_chandef_valid()
235 chandef->chan)); in cfg80211_chandef_valid()
236 oper_width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_valid()
240 if (chandef->center_freq2) in cfg80211_chandef_valid()
252 if (!chandef->center_freq2) in cfg80211_chandef_valid()
255 if (chandef->center_freq1 - chandef->center_freq2 == 80 || in cfg80211_chandef_valid()
256 chandef->center_freq2 - chandef->center_freq1 == 80) in cfg80211_chandef_valid()
260 if (chandef->center_freq2) in cfg80211_chandef_valid()
265 switch (chandef->width) { in cfg80211_chandef_valid()
278 if (chandef->center_freq1 == control_freq + 150 || in cfg80211_chandef_valid()
279 chandef->center_freq1 == control_freq + 130 || in cfg80211_chandef_valid()
280 chandef->center_freq1 == control_freq + 110 || in cfg80211_chandef_valid()
281 chandef->center_freq1 == control_freq + 90 || in cfg80211_chandef_valid()
282 chandef->center_freq1 == control_freq - 90 || in cfg80211_chandef_valid()
283 chandef->center_freq1 == control_freq - 110 || in cfg80211_chandef_valid()
284 chandef->center_freq1 == control_freq - 130 || in cfg80211_chandef_valid()
285 chandef->center_freq1 == control_freq - 150) in cfg80211_chandef_valid()
289 if (chandef->center_freq1 == control_freq + 70 || in cfg80211_chandef_valid()
290 chandef->center_freq1 == control_freq + 50 || in cfg80211_chandef_valid()
291 chandef->center_freq1 == control_freq - 50 || in cfg80211_chandef_valid()
292 chandef->center_freq1 == control_freq - 70) in cfg80211_chandef_valid()
297 if (chandef->center_freq1 == control_freq + 30 || in cfg80211_chandef_valid()
298 chandef->center_freq1 == control_freq - 30) in cfg80211_chandef_valid()
302 if (chandef->center_freq1 == control_freq + 10 || in cfg80211_chandef_valid()
303 chandef->center_freq1 == control_freq - 10) in cfg80211_chandef_valid()
311 if (chandef->center_freq1 == 2484 && in cfg80211_chandef_valid()
312 chandef->width != NL80211_CHAN_WIDTH_20_NOHT) in cfg80211_chandef_valid()
315 if (cfg80211_chandef_is_edmg(chandef) && in cfg80211_chandef_valid()
316 !cfg80211_edmg_chandef_valid(chandef)) in cfg80211_chandef_valid()
468 const struct cfg80211_chan_def *chandef, in cfg80211_set_dfs_state() argument
473 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_set_dfs_state()
476 width = cfg80211_chandef_get_width(chandef); in cfg80211_set_dfs_state()
480 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq1, in cfg80211_set_dfs_state()
483 if (!chandef->center_freq2) in cfg80211_set_dfs_state()
485 cfg80211_set_chans_dfs_state(wiphy, chandef->center_freq2, in cfg80211_set_dfs_state()
527 struct cfg80211_chan_def chandef = {}; in cfg80211_dfs_permissive_check_wdev() local
545 ret = rdev_get_channel(rdev, wdev, link_id, &chandef); in cfg80211_dfs_permissive_check_wdev()
549 if (cfg80211_is_sub_chan(&chandef, chan, false)) in cfg80211_dfs_permissive_check_wdev()
616 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_dfs_required() argument
622 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_required()
630 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_required()
635 ieee80211_chandef_to_khz(chandef), in cfg80211_chandef_dfs_required()
640 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
642 if (!chandef->center_freq2) in cfg80211_chandef_dfs_required()
646 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_required()
651 return BIT(chandef->width); in cfg80211_chandef_dfs_required()
710 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_usable() argument
715 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_usable()
718 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_usable()
723 MHZ_TO_KHZ(chandef->center_freq1), in cfg80211_chandef_dfs_usable()
729 switch (chandef->width) { in cfg80211_chandef_dfs_usable()
731 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_usable()
733 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_usable()
739 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_usable()
750 bool cfg80211_is_sub_chan(struct cfg80211_chan_def *chandef, in cfg80211_is_sub_chan() argument
757 if (!chandef->chan) in cfg80211_is_sub_chan()
760 if (chandef->chan->center_freq == chan->center_freq) in cfg80211_is_sub_chan()
766 width = cfg80211_chandef_get_width(chandef); in cfg80211_is_sub_chan()
770 for (freq = chandef->center_freq1 - width / 2 + 10; in cfg80211_is_sub_chan()
771 freq <= chandef->center_freq1 + width / 2 - 10; freq += 20) { in cfg80211_is_sub_chan()
776 if (!chandef->center_freq2) in cfg80211_is_sub_chan()
779 for (freq = chandef->center_freq2 - width / 2 + 10; in cfg80211_is_sub_chan()
780 freq <= chandef->center_freq2 + width / 2 - 10; freq += 20) { in cfg80211_is_sub_chan()
838 if (cfg80211_is_sub_chan(&wdev->links[link].ap.chandef, in cfg80211_wdev_on_sub_chan()
844 return cfg80211_is_sub_chan(&wdev->u.ibss.chandef, chan, in cfg80211_wdev_on_sub_chan()
847 return cfg80211_is_sub_chan(&wdev->u.mesh.chandef, chan, in cfg80211_wdev_on_sub_chan()
953 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_available() argument
958 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_available()
961 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_available()
966 MHZ_TO_KHZ(chandef->center_freq1), in cfg80211_chandef_dfs_available()
973 switch (chandef->width) { in cfg80211_chandef_dfs_available()
975 WARN_ON(!chandef->center_freq2); in cfg80211_chandef_dfs_available()
977 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_available()
981 WARN_ON(chandef->center_freq2); in cfg80211_chandef_dfs_available()
1019 const struct cfg80211_chan_def *chandef) in cfg80211_chandef_dfs_cac_time() argument
1024 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_dfs_cac_time()
1027 width = cfg80211_chandef_get_width(chandef); in cfg80211_chandef_dfs_cac_time()
1032 MHZ_TO_KHZ(chandef->center_freq1), in cfg80211_chandef_dfs_cac_time()
1035 if (!chandef->center_freq2) in cfg80211_chandef_dfs_cac_time()
1039 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_dfs_cac_time()
1118 const struct cfg80211_chan_def *chandef, in cfg80211_chandef_usable() argument
1130 if (WARN_ON(!cfg80211_chandef_valid(chandef))) in cfg80211_chandef_usable()
1133 ht_cap = &wiphy->bands[chandef->chan->band]->ht_cap; in cfg80211_chandef_usable()
1134 vht_cap = &wiphy->bands[chandef->chan->band]->vht_cap; in cfg80211_chandef_usable()
1135 edmg_cap = &wiphy->bands[chandef->chan->band]->edmg_cap; in cfg80211_chandef_usable()
1141 chandef->edmg.channels, in cfg80211_chandef_usable()
1142 chandef->edmg.bw_config, in cfg80211_chandef_usable()
1143 chandef->chan->hw_value, in cfg80211_chandef_usable()
1147 control_freq = chandef->chan->center_freq; in cfg80211_chandef_usable()
1149 switch (chandef->width) { in cfg80211_chandef_usable()
1174 chandef->chan->band != NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1183 if (chandef->chan->band == NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1190 if (chandef->center_freq1 < control_freq && in cfg80211_chandef_usable()
1191 chandef->chan->flags & IEEE80211_CHAN_NO_HT40MINUS) in cfg80211_chandef_usable()
1193 if (chandef->center_freq1 > control_freq && in cfg80211_chandef_usable()
1194 chandef->chan->flags & IEEE80211_CHAN_NO_HT40PLUS) in cfg80211_chandef_usable()
1205 if (chandef->chan->band != NL80211_BAND_6GHZ && !support_80_80) in cfg80211_chandef_usable()
1211 if (chandef->chan->band == NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1219 if (chandef->chan->band == NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1234 if (chandef->chan->band != NL80211_BAND_6GHZ) in cfg80211_chandef_usable()
1281 ieee80211_chandef_to_khz(chandef), in cfg80211_chandef_usable()
1285 if (!chandef->center_freq2) in cfg80211_chandef_usable()
1288 MHZ_TO_KHZ(chandef->center_freq2), in cfg80211_chandef_usable()
1317 other_chan = wdev->links[link_id].ap.chandef.chan; in cfg80211_ir_permissive_check_wdev()
1412 struct cfg80211_chan_def *chandef, in _cfg80211_reg_can_beacon() argument
1420 trace_cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in _cfg80211_reg_can_beacon()
1425 dfs_required = cfg80211_chandef_dfs_required(wiphy, chandef, iftype); in _cfg80211_reg_can_beacon()
1430 cfg80211_chandef_dfs_available(wiphy, chandef)) { in _cfg80211_reg_can_beacon()
1435 res = cfg80211_chandef_usable(wiphy, chandef, prohibited_flags); in _cfg80211_reg_can_beacon()
1442 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon() argument
1445 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, true); in cfg80211_reg_can_beacon()
1450 struct cfg80211_chan_def *chandef, in cfg80211_reg_can_beacon_relax() argument
1465 chandef->chan); in cfg80211_reg_can_beacon_relax()
1467 return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir); in cfg80211_reg_can_beacon_relax()
1472 struct cfg80211_chan_def *chandef) in cfg80211_set_monitor_channel() argument
1479 return rdev_set_monitor_channel(rdev, chandef); in cfg80211_set_monitor_channel()
1530 return &wdev->u.mesh.chandef; in wdev_chandef()
1532 return &wdev->u.ibss.chandef; in wdev_chandef()
1534 return &wdev->u.ocb.chandef; in wdev_chandef()
1537 return &wdev->links[link_id].ap.chandef; in wdev_chandef()
1576 const struct cfg80211_chan_def *chandef) in cfg80211_valid_disable_subchannel_bitmap() argument
1580 switch (chandef->width) { in cfg80211_valid_disable_subchannel_bitmap()
1583 start_freq = chandef->center_freq1 - 40; in cfg80211_valid_disable_subchannel_bitmap()
1587 start_freq = chandef->center_freq1 - 80; in cfg80211_valid_disable_subchannel_bitmap()
1591 start_freq = chandef->center_freq1 - 160; in cfg80211_valid_disable_subchannel_bitmap()
1602 if (*bitmap & (u16)BIT((chandef->chan->center_freq - start_freq) / 20)) in cfg80211_valid_disable_subchannel_bitmap()