wlan_tdls_cfg.c 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /*
  2. * Copyright (c) 2018 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. /**
  19. * DOC: This file contains TDLS configures interface definitions
  20. */
  21. #include <wlan_objmgr_psoc_obj.h>
  22. #include "wlan_tdls_cfg_api.h"
  23. #include "../../core/src/wlan_tdls_main.h"
  24. QDF_STATUS
  25. cfg_tdls_get_support_enable(struct wlan_objmgr_psoc *psoc,
  26. bool *val)
  27. {
  28. struct tdls_soc_priv_obj *soc_obj;
  29. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  30. if (!soc_obj) {
  31. *val = false;
  32. tdls_err("tdls soc null");
  33. return QDF_STATUS_E_INVAL;
  34. }
  35. *val = soc_obj->tdls_configs.tdls_support_enable;
  36. return QDF_STATUS_SUCCESS;
  37. }
  38. QDF_STATUS
  39. cfg_tdls_set_support_enable(struct wlan_objmgr_psoc *psoc,
  40. bool val)
  41. {
  42. struct tdls_soc_priv_obj *soc_obj;
  43. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  44. if (!soc_obj) {
  45. tdls_err("tdls soc null");
  46. return QDF_STATUS_E_INVAL;
  47. }
  48. soc_obj->tdls_configs.tdls_support_enable = val;
  49. return QDF_STATUS_SUCCESS;
  50. }
  51. QDF_STATUS
  52. cfg_tdls_get_external_control(struct wlan_objmgr_psoc *psoc,
  53. bool *val)
  54. {
  55. struct tdls_soc_priv_obj *soc_obj;
  56. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  57. if (!soc_obj) {
  58. *val = false;
  59. tdls_err("tdls soc null");
  60. return QDF_STATUS_E_INVAL;
  61. }
  62. *val = soc_obj->tdls_configs.tdls_external_control;
  63. return QDF_STATUS_SUCCESS;
  64. }
  65. QDF_STATUS
  66. cfg_tdls_get_uapsd_mask(struct wlan_objmgr_psoc *psoc,
  67. uint32_t *val)
  68. {
  69. struct tdls_soc_priv_obj *soc_obj;
  70. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  71. if (!soc_obj) {
  72. *val = 0;
  73. tdls_err("tdls soc null");
  74. return QDF_STATUS_E_INVAL;
  75. }
  76. *val = soc_obj->tdls_configs.tdls_uapsd_mask;
  77. return QDF_STATUS_SUCCESS;
  78. }
  79. QDF_STATUS
  80. cfg_tdls_get_buffer_sta_enable(struct wlan_objmgr_psoc *psoc,
  81. bool *val)
  82. {
  83. struct tdls_soc_priv_obj *soc_obj;
  84. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  85. if (!soc_obj) {
  86. *val = false;
  87. tdls_err("tdls soc null");
  88. return QDF_STATUS_E_INVAL;
  89. }
  90. *val = soc_obj->tdls_configs.tdls_buffer_sta_enable;
  91. return QDF_STATUS_SUCCESS;
  92. }
  93. QDF_STATUS
  94. cfg_tdls_set_buffer_sta_enable(struct wlan_objmgr_psoc *psoc,
  95. bool val)
  96. {
  97. struct tdls_soc_priv_obj *soc_obj;
  98. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  99. if (!soc_obj) {
  100. tdls_err("tdls soc null");
  101. return QDF_STATUS_E_INVAL;
  102. }
  103. soc_obj->tdls_configs.tdls_buffer_sta_enable = val;
  104. return QDF_STATUS_SUCCESS;
  105. }
  106. QDF_STATUS
  107. cfg_tdls_get_uapsd_inactivity_time(struct wlan_objmgr_psoc *psoc,
  108. uint32_t *val)
  109. {
  110. struct tdls_soc_priv_obj *soc_obj;
  111. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  112. if (!soc_obj) {
  113. *val = 0;
  114. tdls_err("tdls soc null");
  115. return QDF_STATUS_E_INVAL;
  116. }
  117. *val = soc_obj->tdls_configs.tdls_uapsd_inactivity_time;
  118. return QDF_STATUS_SUCCESS;
  119. }
  120. QDF_STATUS
  121. cfg_tdls_get_rx_pkt_threshold(struct wlan_objmgr_psoc *psoc,
  122. uint32_t *val)
  123. {
  124. struct tdls_soc_priv_obj *soc_obj;
  125. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  126. if (!soc_obj) {
  127. *val = 0;
  128. tdls_err("tdls soc null");
  129. return QDF_STATUS_E_INVAL;
  130. }
  131. *val = soc_obj->tdls_configs.tdls_rx_pkt_threshold;
  132. return QDF_STATUS_SUCCESS;
  133. }
  134. QDF_STATUS
  135. cfg_tdls_get_off_channel_enable(struct wlan_objmgr_psoc *psoc,
  136. bool *val)
  137. {
  138. struct tdls_soc_priv_obj *soc_obj;
  139. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  140. if (!soc_obj) {
  141. *val = false;
  142. tdls_err("tdls soc null");
  143. return QDF_STATUS_E_INVAL;
  144. }
  145. *val = soc_obj->tdls_configs.tdls_off_chan_enable;
  146. return QDF_STATUS_SUCCESS;
  147. }
  148. QDF_STATUS
  149. cfg_tdls_set_off_channel_enable(struct wlan_objmgr_psoc *psoc,
  150. bool val)
  151. {
  152. struct tdls_soc_priv_obj *soc_obj;
  153. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  154. if (!soc_obj) {
  155. tdls_err("tdls soc null");
  156. return QDF_STATUS_E_INVAL;
  157. }
  158. soc_obj->tdls_configs.tdls_off_chan_enable = val;
  159. return QDF_STATUS_SUCCESS;
  160. }
  161. QDF_STATUS
  162. cfg_tdls_get_wmm_mode_enable(struct wlan_objmgr_psoc *psoc,
  163. bool *val)
  164. {
  165. struct tdls_soc_priv_obj *soc_obj;
  166. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  167. if (!soc_obj) {
  168. *val = false;
  169. tdls_err("tdls soc null");
  170. return QDF_STATUS_E_INVAL;
  171. }
  172. *val = soc_obj->tdls_configs.tdls_wmm_mode_enable;
  173. return QDF_STATUS_SUCCESS;
  174. }
  175. QDF_STATUS
  176. cfg_tdls_set_vdev_nss_2g(struct wlan_objmgr_psoc *psoc,
  177. uint8_t val)
  178. {
  179. struct tdls_soc_priv_obj *soc_obj;
  180. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  181. if (!soc_obj) {
  182. tdls_err("tdls soc null");
  183. return QDF_STATUS_E_INVAL;
  184. }
  185. soc_obj->tdls_configs.tdls_vdev_nss_2g = val;
  186. return QDF_STATUS_SUCCESS;
  187. }
  188. QDF_STATUS
  189. cfg_tdls_set_vdev_nss_5g(struct wlan_objmgr_psoc *psoc,
  190. uint8_t val)
  191. {
  192. struct tdls_soc_priv_obj *soc_obj;
  193. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  194. if (!soc_obj) {
  195. tdls_err("tdls soc null");
  196. return QDF_STATUS_E_INVAL;
  197. }
  198. soc_obj->tdls_configs.tdls_vdev_nss_5g = val;
  199. return QDF_STATUS_SUCCESS;
  200. }
  201. QDF_STATUS
  202. cfg_tdls_get_sleep_sta_enable(struct wlan_objmgr_psoc *psoc,
  203. bool *val)
  204. {
  205. struct tdls_soc_priv_obj *soc_obj;
  206. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  207. if (!soc_obj) {
  208. *val = false;
  209. tdls_err("tdls soc null");
  210. return QDF_STATUS_E_INVAL;
  211. }
  212. *val = soc_obj->tdls_configs.tdls_sleep_sta_enable;
  213. return QDF_STATUS_SUCCESS;
  214. }
  215. QDF_STATUS
  216. cfg_tdls_set_sleep_sta_enable(struct wlan_objmgr_psoc *psoc,
  217. bool val)
  218. {
  219. struct tdls_soc_priv_obj *soc_obj;
  220. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  221. if (!soc_obj) {
  222. tdls_err("tdls soc null");
  223. return QDF_STATUS_E_INVAL;
  224. }
  225. soc_obj->tdls_configs.tdls_sleep_sta_enable = val;
  226. return QDF_STATUS_SUCCESS;
  227. }
  228. QDF_STATUS
  229. cfg_tdls_get_scan_enable(struct wlan_objmgr_psoc *psoc,
  230. bool *val)
  231. {
  232. struct tdls_soc_priv_obj *soc_obj;
  233. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  234. if (!soc_obj) {
  235. *val = false;
  236. tdls_err("tdls soc null");
  237. return QDF_STATUS_E_INVAL;
  238. }
  239. *val = soc_obj->tdls_configs.tdls_scan_enable;
  240. return QDF_STATUS_SUCCESS;
  241. }
  242. QDF_STATUS
  243. cfg_tdls_set_scan_enable(struct wlan_objmgr_psoc *psoc,
  244. bool val)
  245. {
  246. struct tdls_soc_priv_obj *soc_obj;
  247. soc_obj = wlan_psoc_get_tdls_soc_obj(psoc);
  248. if (!soc_obj) {
  249. tdls_err("tdls soc null");
  250. return QDF_STATUS_E_INVAL;
  251. }
  252. soc_obj->tdls_configs.tdls_scan_enable = val;
  253. return QDF_STATUS_SUCCESS;
  254. }