summaryrefslogtreecommitdiffstats
path: root/net/wireless
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2017-01-04 12:58:30 -0500
committerJohannes Berg <johannes.berg@intel.com>2017-01-06 07:54:04 -0500
commit4787cfa08476d4193c35d958f564f643bb6ae234 (patch)
treec36343fde17cbf304e7c1a178d4ae4eb4f167107 /net/wireless
parentb330b25eaabda00d74e47566d9200907da381896 (diff)
cfg80211: move function checking range fit to util.c
It is needed for another cfg80211 helper that will be out of reg.c so move it to common util.c file and make it non-static. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r--net/wireless/core.h3
-rw-r--r--net/wireless/reg.c27
-rw-r--r--net/wireless/util.c15
3 files changed, 25 insertions, 20 deletions
diff --git a/net/wireless/core.h b/net/wireless/core.h
index af6e023020b1..bc8ba6e57519 100644
--- a/net/wireless/core.h
+++ b/net/wireless/core.h
@@ -430,6 +430,9 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
430void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); 430void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev);
431void cfg80211_process_wdev_events(struct wireless_dev *wdev); 431void cfg80211_process_wdev_events(struct wireless_dev *wdev);
432 432
433bool cfg80211_does_bw_fit_range(const struct ieee80211_freq_range *freq_range,
434 u32 center_freq_khz, u32 bw_khz);
435
433/** 436/**
434 * cfg80211_chandef_dfs_usable - checks if chandef is DFS usable 437 * cfg80211_chandef_dfs_usable - checks if chandef is DFS usable
435 * @wiphy: the wiphy to validate against 438 * @wiphy: the wiphy to validate against
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 5dbac3749738..753efcd51fa3 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -748,21 +748,6 @@ static bool is_valid_rd(const struct ieee80211_regdomain *rd)
748 return true; 748 return true;
749} 749}
750 750
751static bool reg_does_bw_fit(const struct ieee80211_freq_range *freq_range,
752 u32 center_freq_khz, u32 bw_khz)
753{
754 u32 start_freq_khz, end_freq_khz;
755
756 start_freq_khz = center_freq_khz - (bw_khz/2);
757 end_freq_khz = center_freq_khz + (bw_khz/2);
758
759 if (start_freq_khz >= freq_range->start_freq_khz &&
760 end_freq_khz <= freq_range->end_freq_khz)
761 return true;
762
763 return false;
764}
765
766/** 751/**
767 * freq_in_rule_band - tells us if a frequency is in a frequency band 752 * freq_in_rule_band - tells us if a frequency is in a frequency band
768 * @freq_range: frequency rule we want to query 753 * @freq_range: frequency rule we want to query
@@ -1070,7 +1055,7 @@ freq_reg_info_regd(u32 center_freq,
1070 if (!band_rule_found) 1055 if (!band_rule_found)
1071 band_rule_found = freq_in_rule_band(fr, center_freq); 1056 band_rule_found = freq_in_rule_band(fr, center_freq);
1072 1057
1073 bw_fits = reg_does_bw_fit(fr, center_freq, bw); 1058 bw_fits = cfg80211_does_bw_fit_range(fr, center_freq, bw);
1074 1059
1075 if (band_rule_found && bw_fits) 1060 if (band_rule_found && bw_fits)
1076 return rr; 1061 return rr;
@@ -1138,11 +1123,13 @@ static uint32_t reg_rule_to_chan_bw_flags(const struct ieee80211_regdomain *regd
1138 max_bandwidth_khz = reg_get_max_bandwidth(regd, reg_rule); 1123 max_bandwidth_khz = reg_get_max_bandwidth(regd, reg_rule);
1139 1124
1140 /* If we get a reg_rule we can assume that at least 5Mhz fit */ 1125 /* If we get a reg_rule we can assume that at least 5Mhz fit */
1141 if (!reg_does_bw_fit(freq_range, MHZ_TO_KHZ(chan->center_freq), 1126 if (!cfg80211_does_bw_fit_range(freq_range,
1142 MHZ_TO_KHZ(10))) 1127 MHZ_TO_KHZ(chan->center_freq),
1128 MHZ_TO_KHZ(10)))
1143 bw_flags |= IEEE80211_CHAN_NO_10MHZ; 1129 bw_flags |= IEEE80211_CHAN_NO_10MHZ;
1144 if (!reg_does_bw_fit(freq_range, MHZ_TO_KHZ(chan->center_freq), 1130 if (!cfg80211_does_bw_fit_range(freq_range,
1145 MHZ_TO_KHZ(20))) 1131 MHZ_TO_KHZ(chan->center_freq),
1132 MHZ_TO_KHZ(20)))
1146 bw_flags |= IEEE80211_CHAN_NO_20MHZ; 1133 bw_flags |= IEEE80211_CHAN_NO_20MHZ;
1147 1134
1148 if (max_bandwidth_khz < MHZ_TO_KHZ(10)) 1135 if (max_bandwidth_khz < MHZ_TO_KHZ(10))
diff --git a/net/wireless/util.c b/net/wireless/util.c
index c91bc25c4dd5..cd8a7ae55e7d 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -1847,6 +1847,21 @@ void cfg80211_free_nan_func(struct cfg80211_nan_func *f)
1847} 1847}
1848EXPORT_SYMBOL(cfg80211_free_nan_func); 1848EXPORT_SYMBOL(cfg80211_free_nan_func);
1849 1849
1850bool cfg80211_does_bw_fit_range(const struct ieee80211_freq_range *freq_range,
1851 u32 center_freq_khz, u32 bw_khz)
1852{
1853 u32 start_freq_khz, end_freq_khz;
1854
1855 start_freq_khz = center_freq_khz - (bw_khz / 2);
1856 end_freq_khz = center_freq_khz + (bw_khz / 2);
1857
1858 if (start_freq_khz >= freq_range->start_freq_khz &&
1859 end_freq_khz <= freq_range->end_freq_khz)
1860 return true;
1861
1862 return false;
1863}
1864
1850/* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */ 1865/* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */
1851/* Ethernet-II snap header (RFC1042 for most EtherTypes) */ 1866/* Ethernet-II snap header (RFC1042 for most EtherTypes) */
1852const unsigned char rfc1042_header[] __aligned(2) = 1867const unsigned char rfc1042_header[] __aligned(2) =