2
0

011-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. From ce3e491e445ebea9705e76ac7ee3d4841ace1cad Mon Sep 17 00:00:00 2001
  2. From: Peter Oh <[email protected]>
  3. Date: Tue, 17 Apr 2018 21:55:08 -0700
  4. Subject: [PATCH 11/16] mesh: Allow DFS channels to be selected if dfs is
  5. enabled
  6. Note: DFS is assumed to be usable if a country code has been set
  7. Signed-off-by: Benjamin Berg <[email protected]>
  8. Signed-off-by: Peter Oh <[email protected]>
  9. ---
  10. wpa_supplicant/wpa_supplicant.c | 24 ++++++++++++++++++------
  11. 1 file changed, 18 insertions(+), 6 deletions(-)
  12. --- a/wpa_supplicant/wpa_supplicant.c
  13. +++ b/wpa_supplicant/wpa_supplicant.c
  14. @@ -2033,6 +2033,8 @@ void ibss_mesh_setup_freq(struct wpa_sup
  15. struct hostapd_freq_params vht_freq;
  16. int chwidth, seg0, seg1;
  17. u32 vht_caps = 0;
  18. + int dfs_enabled = wpa_s->conf->country[0] &&
  19. + (wpa_s->drv_flags & WPA_DRIVER_FLAGS_RADAR);
  20. freq->freq = ssid->frequency;
  21. @@ -2109,8 +2111,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
  22. return;
  23. /* Check primary channel flags */
  24. - if (pri_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
  25. + if (pri_chan->flag & HOSTAPD_CHAN_DISABLED)
  26. return;
  27. + if (pri_chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
  28. + if (!dfs_enabled)
  29. + return;
  30. #ifdef CONFIG_HT_OVERRIDES
  31. if (ssid->disable_ht40)
  32. @@ -2136,8 +2141,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
  33. return;
  34. /* Check secondary channel flags */
  35. - if (sec_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
  36. + if (sec_chan->flag & HOSTAPD_CHAN_DISABLED)
  37. return;
  38. + if (sec_chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
  39. + if (!dfs_enabled)
  40. + return;
  41. freq->channel = pri_chan->chan;
  42. @@ -2227,8 +2235,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
  43. return;
  44. /* Back to HT configuration if channel not usable */
  45. - if (chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
  46. + if (chan->flag & HOSTAPD_CHAN_DISABLED)
  47. return;
  48. + if (chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
  49. + if (!dfs_enabled)
  50. + return;
  51. }
  52. chwidth = VHT_CHANWIDTH_80MHZ;
  53. @@ -2248,10 +2259,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
  54. if (!chan)
  55. continue;
  56. - if (chan->flag & (HOSTAPD_CHAN_DISABLED |
  57. - HOSTAPD_CHAN_NO_IR |
  58. - HOSTAPD_CHAN_RADAR))
  59. + if (chan->flag & HOSTAPD_CHAN_DISABLED)
  60. continue;
  61. + if (chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
  62. + if (!dfs_enabled)
  63. + continue;
  64. /* Found a suitable second segment for 80+80 */
  65. chwidth = VHT_CHANWIDTH_80P80MHZ;