Guest User

mac80211

a guest
Mar 9th, 2017
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.41 KB | None | 0 0
  1. diff -pur a/drivers/net/wireless/ath/ath9k/common-init.c b/drivers/net/wireless/ath/ath9k/common-init.c
  2. --- a/drivers/net/wireless/ath/ath9k/common-init.c 2017-01-27 03:12:57.878225039 +0100
  3. +++ b/drivers/net/wireless/ath/ath9k/common-init.c 2017-01-27 02:12:25.667393000 +0100
  4. @@ -22,7 +22,7 @@
  5. .band = NL80211_BAND_2GHZ, \
  6. .center_freq = (_freq), \
  7. .hw_value = (_idx), \
  8. - .max_power = 20, \
  9. + .max_power = 30, \
  10. }
  11.  
  12. #define CHAN5G(_freq, _idx) { \
  13. @@ -37,6 +37,50 @@
  14. * we have calibration data for all cards though to make
  15. * this static */
  16. static const struct ieee80211_channel ath9k_2ghz_chantable[] = {
  17. + CHAN2G(2192, 58), /* Channel 213 */
  18. + CHAN2G(2197, 57), /* Channel 214 */
  19. + CHAN2G(2202, 56), /* Channel 215 */
  20. + CHAN2G(2207, 55), /* Channel 216 */
  21. + CHAN2G(2212, 54), /* Channel 217 */
  22. + CHAN2G(2217, 53), /* Channel 218 */
  23. + CHAN2G(2222, 52), /* Channel 219 */
  24. + CHAN2G(2227, 51), /* Channel 220 */
  25. + CHAN2G(2232, 50), /* Channel 221 */
  26. + CHAN2G(2237, 49), /* Channel 222 */
  27. + CHAN2G(2242, 48), /* Channel 223 */
  28. + CHAN2G(2247, 47), /* Channel 224 */
  29. + CHAN2G(2252, 46), /* Channel 225 */
  30. + CHAN2G(2257, 45), /* Channel 226 */
  31. + CHAN2G(2262, 44), /* Channel 227 */
  32. + CHAN2G(2267, 43), /* Channel 228 */
  33. + CHAN2G(2272, 42), /* Channel 229 */
  34. + CHAN2G(2277, 41), /* Channel 230 */
  35. + CHAN2G(2282, 40), /* Channel 231 */
  36. + CHAN2G(2287, 39), /* Channel 232 */
  37. + CHAN2G(2292, 38), /* Channel 233 */
  38. + CHAN2G(2297, 37), /* Channel 234 */
  39. + CHAN2G(2302, 36), /* Channel 235 */
  40. + CHAN2G(2307, 35), /* Channel 236 */
  41. + CHAN2G(2312, 34), /* Channel 237 */
  42. + CHAN2G(2317, 33), /* Channel 238 */
  43. + CHAN2G(2322, 32), /* Channel 239 */
  44. + CHAN2G(2327, 31), /* Channel 240 */
  45. + CHAN2G(2332, 30), /* Channel 241 */
  46. + CHAN2G(2337, 29), /* Channel 242 */
  47. + CHAN2G(2342, 28), /* Channel 243 */
  48. + CHAN2G(2347, 27), /* Channel 244 */
  49. + CHAN2G(2352, 26), /* Channel 245 */
  50. + CHAN2G(2357, 25), /* Channel 246 */
  51. + CHAN2G(2362, 24), /* Channel 247 */
  52. + CHAN2G(2367, 23), /* Channel 248 */
  53. + CHAN2G(2372, 22), /* Channel 249 */
  54. + CHAN2G(2377, 21), /* Channel 250 */
  55. + CHAN2G(2382, 20), /* Channel 251 */
  56. + CHAN2G(2387, 19), /* Channel 252 */
  57. + CHAN2G(2392, 18), /* Channel 253 */
  58. + CHAN2G(2397, 17), /* Channel 254 */
  59. + CHAN2G(2402, 16), /* Channel 255 */
  60. + CHAN2G(2407, 15), /* Channel 0 */
  61. CHAN2G(2412, 0), /* Channel 1 */
  62. CHAN2G(2417, 1), /* Channel 2 */
  63. CHAN2G(2422, 2), /* Channel 3 */
  64. @@ -48,6 +92,7 @@ static const struct ieee80211_channel at
  65. CHAN2G(2452, 8), /* Channel 9 */
  66. CHAN2G(2457, 9), /* Channel 10 */
  67. CHAN2G(2462, 10), /* Channel 11 */
  68. + CHAN2G(2464, 14), /* Channel 11 */
  69. CHAN2G(2467, 11), /* Channel 12 */
  70. CHAN2G(2472, 12), /* Channel 13 */
  71. CHAN2G(2484, 13), /* Channel 14 */
  72. diff -pur a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
  73. --- a/drivers/net/wireless/ath/ath9k/hw.h 2017-01-27 03:12:44.230158313 +0100
  74. +++ b/drivers/net/wireless/ath/ath9k/hw.h 2017-01-27 02:12:29.919414000 +0100
  75. @@ -74,7 +74,7 @@
  76.  
  77. #define ATH9K_RSSI_BAD -128
  78.  
  79. -#define ATH9K_NUM_CHANNELS 38
  80. +#define ATH9K_NUM_CHANNELS 83
  81.  
  82. /* Register read/write primitives */
  83. #define REG_WRITE(_ah, _reg, _val) \
  84. diff -pur a/drivers/net/wireless/ath/regd.c b/drivers/net/wireless/ath/regd.c
  85. --- a/drivers/net/wireless/ath/regd.c 2017-01-27 03:34:37.760579834 +0100
  86. +++ b/drivers/net/wireless/ath/regd.c 2017-01-27 01:39:28.073725000 +0100
  87. @@ -33,29 +33,16 @@ static int __ath_regd_init(struct ath_re
  88. */
  89.  
  90. /* Only these channels all allow active scan on all world regulatory domains */
  91. -#define ATH9K_2GHZ_CH01_11 REG_RULE(2412-10, 2462+10, 40, 0, 20, 0)
  92. -
  93. -/* We enable active scan on these a case by case basis by regulatory domain */
  94. -#define ATH9K_2GHZ_CH12_13 REG_RULE(2467-10, 2472+10, 40, 0, 20,\
  95. - NL80211_RRF_NO_IR)
  96. -#define ATH9K_2GHZ_CH14 REG_RULE(2484-10, 2484+10, 40, 0, 20,\
  97. - NL80211_RRF_NO_IR | \
  98. - NL80211_RRF_NO_OFDM)
  99. +#define ATH9K_2GHZ_2224 REG_RULE(2192-10, 2472+10, 40, 0, 30, 0)
  100. +#define ATH9K_2GHZ_CH14 REG_RULE(2484-10, 2484+10, 40, 0, 30, 0)
  101. +#define ATH9K_2GHZ_2527 REG_RULE(2492-10, 2732+10, 40, 0, 30, 0)
  102. +
  103. +#define ATH9K_2GHZ ATH9K_2GHZ_2224, \
  104. + ATH9K_2GHZ_CH14, \
  105. + ATH9K_2GHZ_2527
  106.  
  107. /* We allow IBSS on these on a case by case basis by regulatory domain */
  108. -#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5350+10, 80, 0, 30,\
  109. - NL80211_RRF_NO_IR)
  110. -#define ATH9K_5GHZ_5470_5850 REG_RULE(5470-10, 5850+10, 80, 0, 30,\
  111. - NL80211_RRF_NO_IR)
  112. -#define ATH9K_5GHZ_5725_5850 REG_RULE(5725-10, 5850+10, 80, 0, 30,\
  113. - NL80211_RRF_NO_IR)
  114. -
  115. -#define ATH9K_2GHZ_ALL ATH9K_2GHZ_CH01_11, \
  116. - ATH9K_2GHZ_CH12_13, \
  117. - ATH9K_2GHZ_CH14
  118. -
  119. -#define ATH9K_5GHZ_ALL ATH9K_5GHZ_5150_5350, \
  120. - ATH9K_5GHZ_5470_5850
  121. +#define ATH9K_5GHZ REG_RULE(4900-10, 6100+10, 80, 0, 30, 0)
  122.  
  123. /* This one skips what we call "mid band" */
  124. #define ATH9K_5GHZ_NO_MIDBAND ATH9K_5GHZ_5150_5350, \
  125. @@ -70,8 +57,8 @@ static int __ath_regd_init(struct ath_re
  126. static const struct ieee80211_regdomain ath_world_regdom_60_61_62 = {
  127. .alpha2 = "99",
  128. REGD_RULES(
  129. - ATH9K_2GHZ_ALL,
  130. - ATH9K_5GHZ_ALL,
  131. + ATH9K_2GHZ,
  132. + ATH9K_5GHZ,
  133. )
  134. };
  135.  
  136. @@ -79,9 +66,8 @@ static const struct ieee80211_regdomain
  137. static const struct ieee80211_regdomain ath_world_regdom_63_65 = {
  138. .alpha2 = "99",
  139. REGD_RULES(
  140. - ATH9K_2GHZ_CH01_11,
  141. - ATH9K_2GHZ_CH12_13,
  142. - ATH9K_5GHZ_NO_MIDBAND,
  143. + ATH9K_2GHZ,
  144. + ATH9K_5GHZ,
  145. )
  146. };
  147.  
  148. @@ -89,8 +75,8 @@ static const struct ieee80211_regdomain
  149. static const struct ieee80211_regdomain ath_world_regdom_64 = {
  150. .alpha2 = "99",
  151. REGD_RULES(
  152. - ATH9K_2GHZ_CH01_11,
  153. - ATH9K_5GHZ_NO_MIDBAND,
  154. + ATH9K_2GHZ,
  155. + ATH9K_5GHZ,
  156. )
  157. };
  158.  
  159. @@ -98,8 +84,8 @@ static const struct ieee80211_regdomain
  160. static const struct ieee80211_regdomain ath_world_regdom_66_69 = {
  161. .alpha2 = "99",
  162. REGD_RULES(
  163. - ATH9K_2GHZ_CH01_11,
  164. - ATH9K_5GHZ_ALL,
  165. + ATH9K_2GHZ,
  166. + ATH9K_5GHZ,
  167. )
  168. };
  169.  
  170. @@ -107,9 +93,8 @@ static const struct ieee80211_regdomain
  171. static const struct ieee80211_regdomain ath_world_regdom_67_68_6A_6C = {
  172. .alpha2 = "99",
  173. REGD_RULES(
  174. - ATH9K_2GHZ_CH01_11,
  175. - ATH9K_2GHZ_CH12_13,
  176. - ATH9K_5GHZ_ALL,
  177. + ATH9K_2GHZ,
  178. + ATH9K_5GHZ,
  179. )
  180. };
  181.  
  182. diff -pur a/net/wireless/reg.c b/net/wireless/reg.c
  183. --- a/net/wireless/reg.c 2017-01-24 21:54:57.121925000 +0100
  184. +++ b/net/wireless/reg.c 2017-01-27 02:07:42.950011000 +0100
  185. @@ -220,15 +220,8 @@ static const struct ieee80211_regdomain
  186. .alpha2 = "00",
  187. .reg_rules = {
  188. /* IEEE 802.11b/g, channels 1..11 */
  189. - REG_RULE(2412-10, 2462+10, 40, 6, 20, 0),
  190. - /* IEEE 802.11b/g, channels 12..13. */
  191. - REG_RULE(2467-10, 2472+10, 20, 6, 20,
  192. - NL80211_RRF_NO_IR | NL80211_RRF_AUTO_BW),
  193. - /* IEEE 802.11 channel 14 - Only JP enables
  194. - * this and for 802.11b only */
  195. - REG_RULE(2484-10, 2484+10, 20, 6, 20,
  196. - NL80211_RRF_NO_IR |
  197. - NL80211_RRF_NO_OFDM),
  198. + REG_RULE(2192-10, 2472+10, 40, 6, 30, 0),
  199. + REG_RULE(2484-10, 2484+10, 40, 6, 30, 0),
  200. /* IEEE 802.11a, channel 36..48 */
  201. REG_RULE(5180-10, 5240+10, 80, 6, 20,
  202. NL80211_RRF_NO_IR |
  203. @@ -2812,13 +2805,6 @@ static int reg_set_rd_user(const struct
  204. if (!regdom_changes(rd->alpha2))
  205. return -EALREADY;
  206.  
  207. - if (!is_valid_rd(rd)) {
  208. - pr_err("Invalid regulatory domain detected: %c%c\n",
  209. - rd->alpha2[0], rd->alpha2[1]);
  210. - print_regdomain_info(rd);
  211. - return -EINVAL;
  212. - }
  213. -
  214. if (!user_request->intersect) {
  215. reset_regdomains(false, rd);
  216. return 0;
  217. @@ -2849,13 +2835,6 @@ static int reg_set_rd_driver(const struc
  218. if (!regdom_changes(rd->alpha2))
  219. return -EALREADY;
  220.  
  221. - if (!is_valid_rd(rd)) {
  222. - pr_err("Invalid regulatory domain detected: %c%c\n",
  223. - rd->alpha2[0], rd->alpha2[1]);
  224. - print_regdomain_info(rd);
  225. - return -EINVAL;
  226. - }
  227. -
  228. request_wiphy = wiphy_idx_to_wiphy(driver_request->wiphy_idx);
  229. if (!request_wiphy)
  230. return -ENODEV;
  231. @@ -2908,13 +2887,6 @@ static int reg_set_rd_country_ie(const s
  232. * and the pending request came in from a country IE
  233. */
  234.  
  235. - if (!is_valid_rd(rd)) {
  236. - pr_err("Invalid regulatory domain detected: %c%c\n",
  237. - rd->alpha2[0], rd->alpha2[1]);
  238. - print_regdomain_info(rd);
  239. - return -EINVAL;
  240. - }
  241. -
  242. request_wiphy = wiphy_idx_to_wiphy(country_ie_request->wiphy_idx);
  243. if (!request_wiphy)
  244. return -ENODEV;
  245. @@ -3013,11 +2985,6 @@ static int __regulatory_set_wiphy_regd(s
  246. "wiphy should have REGULATORY_WIPHY_SELF_MANAGED\n"))
  247. return -EPERM;
  248.  
  249. - if (WARN(!is_valid_rd(rd), "Invalid regulatory domain detected\n")) {
  250. - print_regdomain_info(rd);
  251. - return -EINVAL;
  252. - }
  253. -
  254. regd = reg_copy_regd(rd);
  255. if (IS_ERR(regd))
  256. return PTR_ERR(regd);
  257. diff -pur a/net/wireless/util.c b/net/wireless/util.c
  258. --- a/net/wireless/util.c 2017-01-27 03:07:40.868675258 +0100
  259. +++ b/net/wireless/util.c 2017-01-27 00:53:41.599777000 +0100
  260. @@ -73,6 +73,7 @@ int ieee80211_channel_to_frequency(int c
  261. return 0; /* not supported */
  262. switch (band) {
  263. case NL80211_BAND_2GHZ:
  264. + chan = (int)(char)chan;
  265. if (chan == 14)
  266. return 2484;
  267. else if (chan < 14)
  268. @@ -1449,7 +1450,14 @@ bool ieee80211_chandef_to_operating_clas
  269. if (chandef->width > NL80211_CHAN_WIDTH_40)
  270. return false;
  271.  
  272. - *op_class = 82; /* channel 14 */
  273. + if (chandef->width == NL80211_CHAN_WIDTH_40) {
  274. + if (freq > chandef->chan->center_freq)
  275. + *op_class = 83; /* HT40+ */
  276. + else
  277. + *op_class = 84; /* HT40- */
  278. + } else {
  279. + *op_class = 81;
  280. + }
  281. return true;
  282. }
Add Comment
Please, Sign In to add comment