aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/reg.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/wireless/reg.c')
-rw-r--r--net/wireless/reg.c58
1 files changed, 28 insertions, 30 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
index 5fbeab50996f..7aba46efc7dd 100644
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -68,7 +68,7 @@ static struct list_head regulatory_requests;
68/* Central wireless core regulatory domains, we only need two, 68/* Central wireless core regulatory domains, we only need two,
69 * the current one and a world regulatory domain in case we have no 69 * the current one and a world regulatory domain in case we have no
70 * information to give us an alpha2 */ 70 * information to give us an alpha2 */
71static struct ieee80211_regdomain *cfg80211_regdomain; 71static const struct ieee80211_regdomain *cfg80211_regdomain;
72 72
73/* We keep a static world regulatory domain in case of the absence of CRDA */ 73/* We keep a static world regulatory domain in case of the absence of CRDA */
74static const struct ieee80211_regdomain world_regdom = { 74static const struct ieee80211_regdomain world_regdom = {
@@ -81,8 +81,8 @@ static const struct ieee80211_regdomain world_regdom = {
81 } 81 }
82}; 82};
83 83
84static struct ieee80211_regdomain *cfg80211_world_regdom = 84static const struct ieee80211_regdomain *cfg80211_world_regdom =
85 (struct ieee80211_regdomain *) &world_regdom; 85 &world_regdom;
86 86
87#ifdef CONFIG_WIRELESS_OLD_REGULATORY 87#ifdef CONFIG_WIRELESS_OLD_REGULATORY
88static char *ieee80211_regdom = "US"; 88static char *ieee80211_regdom = "US";
@@ -168,7 +168,7 @@ static const struct ieee80211_regdomain *static_regdom(char *alpha2)
168 return &us_regdom; 168 return &us_regdom;
169} 169}
170 170
171static bool is_old_static_regdom(struct ieee80211_regdomain *rd) 171static bool is_old_static_regdom(const struct ieee80211_regdomain *rd)
172{ 172{
173 if (rd == &us_regdom || rd == &jp_regdom || rd == &eu_regdom) 173 if (rd == &us_regdom || rd == &jp_regdom || rd == &eu_regdom)
174 return true; 174 return true;
@@ -201,13 +201,13 @@ static void reset_regdomains(void)
201 } else if (cfg80211_regdomain && cfg80211_regdomain != &world_regdom) 201 } else if (cfg80211_regdomain && cfg80211_regdomain != &world_regdom)
202 kfree(cfg80211_regdomain); 202 kfree(cfg80211_regdomain);
203 203
204 cfg80211_world_regdom = (struct ieee80211_regdomain *) &world_regdom; 204 cfg80211_world_regdom = &world_regdom;
205 cfg80211_regdomain = NULL; 205 cfg80211_regdomain = NULL;
206} 206}
207 207
208/* Dynamic world regulatory domain requested by the wireless 208/* Dynamic world regulatory domain requested by the wireless
209 * core upon initialization */ 209 * core upon initialization */
210static void update_world_regdomain(struct ieee80211_regdomain *rd) 210static void update_world_regdomain(const struct ieee80211_regdomain *rd)
211{ 211{
212 BUG_ON(list_empty(&regulatory_requests)); 212 BUG_ON(list_empty(&regulatory_requests));
213 213
@@ -218,7 +218,7 @@ static void update_world_regdomain(struct ieee80211_regdomain *rd)
218} 218}
219#endif 219#endif
220 220
221bool is_world_regdom(char *alpha2) 221bool is_world_regdom(const char *alpha2)
222{ 222{
223 if (!alpha2) 223 if (!alpha2)
224 return false; 224 return false;
@@ -227,7 +227,7 @@ bool is_world_regdom(char *alpha2)
227 return false; 227 return false;
228} 228}
229 229
230static bool is_alpha2_set(char *alpha2) 230static bool is_alpha2_set(const char *alpha2)
231{ 231{
232 if (!alpha2) 232 if (!alpha2)
233 return false; 233 return false;
@@ -244,7 +244,7 @@ static bool is_alpha_upper(char letter)
244 return false; 244 return false;
245} 245}
246 246
247static bool is_unknown_alpha2(char *alpha2) 247static bool is_unknown_alpha2(const char *alpha2)
248{ 248{
249 if (!alpha2) 249 if (!alpha2)
250 return false; 250 return false;
@@ -255,7 +255,7 @@ static bool is_unknown_alpha2(char *alpha2)
255 return false; 255 return false;
256} 256}
257 257
258static bool is_an_alpha2(char *alpha2) 258static bool is_an_alpha2(const char *alpha2)
259{ 259{
260 if (!alpha2) 260 if (!alpha2)
261 return false; 261 return false;
@@ -264,7 +264,7 @@ static bool is_an_alpha2(char *alpha2)
264 return false; 264 return false;
265} 265}
266 266
267static bool alpha2_equal(char *alpha2_x, char *alpha2_y) 267static bool alpha2_equal(const char *alpha2_x, const char *alpha2_y)
268{ 268{
269 if (!alpha2_x || !alpha2_y) 269 if (!alpha2_x || !alpha2_y)
270 return false; 270 return false;
@@ -274,7 +274,7 @@ static bool alpha2_equal(char *alpha2_x, char *alpha2_y)
274 return false; 274 return false;
275} 275}
276 276
277static bool regdom_changed(char *alpha2) 277static bool regdom_changed(const char *alpha2)
278{ 278{
279 if (!cfg80211_regdomain) 279 if (!cfg80211_regdomain)
280 return true; 280 return true;
@@ -405,7 +405,7 @@ static int ignore_request(struct wiphy *wiphy, enum reg_set_by set_by,
405 } 405 }
406} 406}
407 407
408static bool __reg_is_valid_request(char *alpha2, 408static bool __reg_is_valid_request(const char *alpha2,
409 struct regulatory_request **request) 409 struct regulatory_request **request)
410{ 410{
411 struct regulatory_request *req; 411 struct regulatory_request *req;
@@ -421,16 +421,16 @@ static bool __reg_is_valid_request(char *alpha2,
421} 421}
422 422
423/* Used by nl80211 before kmalloc'ing our regulatory domain */ 423/* Used by nl80211 before kmalloc'ing our regulatory domain */
424bool reg_is_valid_request(char *alpha2) 424bool reg_is_valid_request(const char *alpha2)
425{ 425{
426 struct regulatory_request *request = NULL; 426 struct regulatory_request *request = NULL;
427 return __reg_is_valid_request(alpha2, &request); 427 return __reg_is_valid_request(alpha2, &request);
428} 428}
429 429
430/* Sanity check on a regulatory rule */ 430/* Sanity check on a regulatory rule */
431static bool is_valid_reg_rule(struct ieee80211_reg_rule *rule) 431static bool is_valid_reg_rule(const struct ieee80211_reg_rule *rule)
432{ 432{
433 struct ieee80211_freq_range *freq_range = &rule->freq_range; 433 const struct ieee80211_freq_range *freq_range = &rule->freq_range;
434 u32 freq_diff; 434 u32 freq_diff;
435 435
436 if (freq_range->start_freq_khz == 0 || freq_range->end_freq_khz == 0) 436 if (freq_range->start_freq_khz == 0 || freq_range->end_freq_khz == 0)
@@ -447,9 +447,9 @@ static bool is_valid_reg_rule(struct ieee80211_reg_rule *rule)
447 return true; 447 return true;
448} 448}
449 449
450static bool is_valid_rd(struct ieee80211_regdomain *rd) 450static bool is_valid_rd(const struct ieee80211_regdomain *rd)
451{ 451{
452 struct ieee80211_reg_rule *reg_rule = NULL; 452 const struct ieee80211_reg_rule *reg_rule = NULL;
453 unsigned int i; 453 unsigned int i;
454 454
455 if (!rd->n_reg_rules) 455 if (!rd->n_reg_rules)
@@ -661,12 +661,12 @@ unlock_and_exit:
661EXPORT_SYMBOL(regulatory_hint); 661EXPORT_SYMBOL(regulatory_hint);
662 662
663 663
664static void print_rd_rules(struct ieee80211_regdomain *rd) 664static void print_rd_rules(const struct ieee80211_regdomain *rd)
665{ 665{
666 unsigned int i; 666 unsigned int i;
667 struct ieee80211_reg_rule *reg_rule = NULL; 667 const struct ieee80211_reg_rule *reg_rule = NULL;
668 struct ieee80211_freq_range *freq_range = NULL; 668 const struct ieee80211_freq_range *freq_range = NULL;
669 struct ieee80211_power_rule *power_rule = NULL; 669 const struct ieee80211_power_rule *power_rule = NULL;
670 670
671 printk(KERN_INFO "\t(start_freq - end_freq @ bandwidth), " 671 printk(KERN_INFO "\t(start_freq - end_freq @ bandwidth), "
672 "(max_antenna_gain, max_eirp)\n"); 672 "(max_antenna_gain, max_eirp)\n");
@@ -696,7 +696,7 @@ static void print_rd_rules(struct ieee80211_regdomain *rd)
696 } 696 }
697} 697}
698 698
699static void print_regdomain(struct ieee80211_regdomain *rd) 699static void print_regdomain(const struct ieee80211_regdomain *rd)
700{ 700{
701 701
702 if (is_world_regdom(rd->alpha2)) 702 if (is_world_regdom(rd->alpha2))
@@ -715,14 +715,14 @@ static void print_regdomain(struct ieee80211_regdomain *rd)
715 print_rd_rules(rd); 715 print_rd_rules(rd);
716} 716}
717 717
718void print_regdomain_info(struct ieee80211_regdomain *rd) 718void print_regdomain_info(const struct ieee80211_regdomain *rd)
719{ 719{
720 printk(KERN_INFO "cfg80211: Regulatory domain: %c%c\n", 720 printk(KERN_INFO "cfg80211: Regulatory domain: %c%c\n",
721 rd->alpha2[0], rd->alpha2[1]); 721 rd->alpha2[0], rd->alpha2[1]);
722 print_rd_rules(rd); 722 print_rd_rules(rd);
723} 723}
724 724
725static int __set_regdom(struct ieee80211_regdomain *rd) 725static int __set_regdom(const struct ieee80211_regdomain *rd)
726{ 726{
727 struct regulatory_request *request = NULL; 727 struct regulatory_request *request = NULL;
728 728
@@ -804,7 +804,7 @@ static int __set_regdom(struct ieee80211_regdomain *rd)
804 * multiple drivers can be ironed out later. Caller must've already 804 * multiple drivers can be ironed out later. Caller must've already
805 * kmalloc'd the rd structure. If this calls fails you should kfree() 805 * kmalloc'd the rd structure. If this calls fails you should kfree()
806 * the passed rd. Caller must hold cfg80211_drv_mutex */ 806 * the passed rd. Caller must hold cfg80211_drv_mutex */
807int set_regdom(struct ieee80211_regdomain *rd) 807int set_regdom(const struct ieee80211_regdomain *rd)
808{ 808{
809 struct regulatory_request *this_request = NULL, *prev_request = NULL; 809 struct regulatory_request *this_request = NULL, *prev_request = NULL;
810 int r; 810 int r;
@@ -857,8 +857,7 @@ int regulatory_init(void)
857 return PTR_ERR(reg_pdev); 857 return PTR_ERR(reg_pdev);
858 858
859#ifdef CONFIG_WIRELESS_OLD_REGULATORY 859#ifdef CONFIG_WIRELESS_OLD_REGULATORY
860 cfg80211_regdomain = 860 cfg80211_regdomain = static_regdom(ieee80211_regdom);
861 (struct ieee80211_regdomain *) static_regdom(ieee80211_regdom);
862 /* Used during reset_regdomains_static() */ 861 /* Used during reset_regdomains_static() */
863 cfg80211_world_regdom = cfg80211_regdomain; 862 cfg80211_world_regdom = cfg80211_regdomain;
864 863
@@ -872,8 +871,7 @@ int regulatory_init(void)
872 err = __regulatory_hint(NULL, REGDOM_SET_BY_CORE, 871 err = __regulatory_hint(NULL, REGDOM_SET_BY_CORE,
873 ieee80211_regdom, NULL); 872 ieee80211_regdom, NULL);
874#else 873#else
875 cfg80211_regdomain = 874 cfg80211_regdomain = cfg80211_world_regdom;
876 (struct ieee80211_regdomain *) cfg80211_world_regdom;
877 875
878 err = __regulatory_hint(NULL, REGDOM_SET_BY_CORE, "00", NULL); 876 err = __regulatory_hint(NULL, REGDOM_SET_BY_CORE, "00", NULL);
879 if (err) 877 if (err)