os_if_son.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667
  1. /*
  2. * Copyright (c) 2021, The Linux Foundation. All rights reserved.
  3. * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. /**
  17. * DOC : os_if_son.h
  18. *
  19. * WLAN Host Device Driver file for son (Self Organizing Network)
  20. * support.
  21. *
  22. */
  23. #ifndef _OS_IF_SON_H_
  24. #define _OS_IF_SON_H_
  25. #include <qdf_types.h>
  26. #include <wlan_objmgr_vdev_obj.h>
  27. #include <wlan_objmgr_psoc_obj.h>
  28. #include <wlan_objmgr_pdev_obj.h>
  29. #include <wlan_reg_ucfg_api.h>
  30. #include <ieee80211_external.h>
  31. #define INVALID_WIDTH 0xFF
  32. /**
  33. * struct son_callbacks - struct containing callback to non-converged driver
  34. * @os_if_is_acs_in_progress: whether acs is in progress or not
  35. * @os_if_set_chan_ext_offset: set chan extend offset
  36. * @os_if_get_chan_ext_offset: get chan extend offset
  37. * @os_if_set_bandwidth: set band width
  38. * @os_if_get_bandwidth: get band width
  39. * @os_if_set_chan: set chan
  40. * @os_if_set_country_code: set country code
  41. * @os_if_set_candidate_freq: set freq to switch after radar detection
  42. * @os_if_get_candidate_freq: get freq to switch after radar detection
  43. * @os_if_set_phymode: set phy mode
  44. * @os_if_get_phymode: get phy mode
  45. * @os_if_get_rx_nss: Gets number of RX spatial streams
  46. * @os_if_set_acl_policy: set acl policy
  47. * @os_if_get_acl_policy: get acl policy
  48. * @os_if_add_acl_mac: add mac to acl
  49. * @os_if_del_acl_mac: del mac from acl
  50. * @os_if_kickout_mac: kickout sta with given mac
  51. * @os_if_set_chwidth: set chan width
  52. * @os_if_get_chwidth: get chan width
  53. * @os_if_get_sta_list: get sta list
  54. * @os_if_get_sta_space: get sta space
  55. * @os_if_deauth_sta: Deauths the target peer
  56. * @os_if_modify_acl: Add/Del target peer in ACL
  57. * @os_if_get_vdev_by_netdev: Get vdev from net device
  58. * @os_if_trigger_objmgr_object_creation: Trigger objmgr object creation
  59. * @os_if_trigger_objmgr_object_deletion: Trigger objmgr object deletion
  60. * @os_if_start_acs: Trigger ACS
  61. * @os_if_set_acs_channels: Set channel list for ACS
  62. * @os_if_get_acs_report: Gets the ACS report
  63. */
  64. struct son_callbacks {
  65. uint32_t (*os_if_is_acs_in_progress)(struct wlan_objmgr_vdev *vdev);
  66. int (*os_if_set_chan_ext_offset)(
  67. struct wlan_objmgr_vdev *vdev,
  68. enum sec20_chan_offset son_chan_ext_offset);
  69. enum sec20_chan_offset (*os_if_get_chan_ext_offset)(
  70. struct wlan_objmgr_vdev *vdev);
  71. int (*os_if_set_bandwidth)(struct wlan_objmgr_vdev *vdev,
  72. uint32_t son_bandwidth);
  73. uint32_t (*os_if_get_bandwidth)(struct wlan_objmgr_vdev *vdev);
  74. int (*os_if_set_chan)(struct wlan_objmgr_vdev *vdev, int chan,
  75. enum wlan_band_id son_band);
  76. uint32_t (*os_if_get_sta_count)(struct wlan_objmgr_vdev *vdev);
  77. int (*os_if_set_country_code)(struct wlan_objmgr_vdev *vdev,
  78. char *country_code);
  79. int (*os_if_set_candidate_freq)(struct wlan_objmgr_vdev *vdev,
  80. qdf_freq_t freq);
  81. qdf_freq_t (*os_if_get_candidate_freq)(struct wlan_objmgr_vdev *vdev);
  82. int (*os_if_set_phymode)(struct wlan_objmgr_vdev *vdev,
  83. enum ieee80211_phymode mode);
  84. enum ieee80211_phymode (*os_if_get_phymode)(
  85. struct wlan_objmgr_vdev *vdev);
  86. uint8_t (*os_if_get_rx_nss)(struct wlan_objmgr_vdev *vdev);
  87. QDF_STATUS (*os_if_set_acl_policy)(struct wlan_objmgr_vdev *vdev,
  88. ieee80211_acl_cmd son_acl_policy);
  89. ieee80211_acl_cmd (*os_if_get_acl_policy)(
  90. struct wlan_objmgr_vdev *vdev);
  91. int (*os_if_add_acl_mac)(struct wlan_objmgr_vdev *vdev,
  92. struct qdf_mac_addr *acl_mac);
  93. int (*os_if_del_acl_mac)(struct wlan_objmgr_vdev *vdev,
  94. struct qdf_mac_addr *acl_mac);
  95. int (*os_if_kickout_mac)(struct wlan_objmgr_vdev *vdev,
  96. struct qdf_mac_addr *acl_mac);
  97. int (*os_if_set_chwidth)(struct wlan_objmgr_vdev *vdev,
  98. enum ieee80211_cwm_width son_chwidth);
  99. enum ieee80211_cwm_width (*os_if_get_chwidth)(
  100. struct wlan_objmgr_vdev *vdev);
  101. void (*os_if_get_sta_list)(struct wlan_objmgr_vdev *vdev,
  102. struct ieee80211req_sta_info *req,
  103. uint32_t *space);
  104. uint32_t (*os_if_get_sta_space)(struct wlan_objmgr_vdev *vdev);
  105. void (*os_if_deauth_sta)(struct wlan_objmgr_vdev *vdev,
  106. uint8_t *peer_mac,
  107. bool ignore_frame);
  108. void (*os_if_modify_acl)(struct wlan_objmgr_vdev *vdev,
  109. uint8_t *peer_mac,
  110. bool allow_auth);
  111. struct wlan_objmgr_vdev *(*os_if_get_vdev_by_netdev)
  112. (struct net_device *dev);
  113. QDF_STATUS (*os_if_trigger_objmgr_object_creation)
  114. (enum wlan_umac_comp_id id);
  115. QDF_STATUS (*os_if_trigger_objmgr_object_deletion)
  116. (enum wlan_umac_comp_id id);
  117. int (*os_if_start_acs)(struct wlan_objmgr_vdev *vdev, uint8_t enable);
  118. int (*os_if_set_acs_channels)(struct wlan_objmgr_vdev *vdev,
  119. struct ieee80211req_athdbg *req);
  120. int (*os_if_get_acs_report)(struct wlan_objmgr_vdev *vdev,
  121. struct ieee80211_acs_dbg *acs_r);
  122. };
  123. /**
  124. * os_if_son_register_hdd_callbacks() - register son hdd callback
  125. * @psoc: psoc
  126. * @cb_obj: pointer to callback
  127. *
  128. * Return: void
  129. */
  130. void os_if_son_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
  131. struct son_callbacks *cb_obj);
  132. /**
  133. * os_if_son_get_freq() - get freq
  134. * @vdev: vdev
  135. *
  136. * Return: freq of given vdev
  137. */
  138. qdf_freq_t os_if_son_get_freq(struct wlan_objmgr_vdev *vdev);
  139. /**
  140. * os_if_son_is_acs_in_progress() - whether ACS in progress or not
  141. * @vdev: vdev
  142. *
  143. * Return: true if ACS is in progress
  144. */
  145. uint32_t os_if_son_is_acs_in_progress(struct wlan_objmgr_vdev *vdev);
  146. /**
  147. * os_if_son_is_cac_in_progress() - whether CAC is in progress or not
  148. * @vdev: vdev
  149. *
  150. * Return: true if CAC is in progress
  151. */
  152. uint32_t os_if_son_is_cac_in_progress(struct wlan_objmgr_vdev *vdev);
  153. /**
  154. * os_if_son_set_chan_ext_offset() - set chan extend offset
  155. * @vdev: vdev
  156. * @son_chan_ext_offset son chan extend offset
  157. *
  158. * Return: 0 on success, negative errno on failure
  159. */
  160. int os_if_son_set_chan_ext_offset(struct wlan_objmgr_vdev *vdev,
  161. enum sec20_chan_offset son_chan_ext_offset);
  162. /**
  163. * os_if_son_get_chan_ext_offset() - get chan extend offset
  164. * @vdev: vdev
  165. *
  166. * Return: enum sec20_chan_offset
  167. */
  168. enum sec20_chan_offset os_if_son_get_chan_ext_offset(
  169. struct wlan_objmgr_vdev *vdev);
  170. /**
  171. * os_if_son_set_bandwidth() - set band width
  172. * @vdev: vdev
  173. * @son_bandwidth: band width
  174. *
  175. * Return: 0 on success, negative errno on failure
  176. */
  177. int os_if_son_set_bandwidth(struct wlan_objmgr_vdev *vdev,
  178. uint32_t son_bandwidth);
  179. /**
  180. * os_if_son_get_bandwidth() - get band width
  181. * @vdev: vdev
  182. *
  183. * Return: band width
  184. */
  185. uint32_t os_if_son_get_bandwidth(struct wlan_objmgr_vdev *vdev);
  186. /**
  187. * os_if_son_get_band_info() - get band info
  188. * @vdev: vdev
  189. *
  190. * Return: band info
  191. */
  192. uint32_t os_if_son_get_band_info(struct wlan_objmgr_vdev *vdev);
  193. /**
  194. * os_if_son_get_chan_list() - get a list of chan information
  195. * @vdev: vdev
  196. * @ic_chans: chan information array to get
  197. * @chan_info: pointer to ieee80211_channel_info to get
  198. * @ic_nchans: number of chan information it gets
  199. * @flag_160: flag indicating the API to fill the center frequencies of 160MHz.
  200. *
  201. * Return: 0 on success, negative errno on failure
  202. */
  203. int os_if_son_get_chan_list(struct wlan_objmgr_vdev *vdev,
  204. struct ieee80211_ath_channel *ic_chans,
  205. struct ieee80211_channel_info *chan_info,
  206. uint8_t *ic_nchans, bool flag_160);
  207. /**
  208. * os_if_son_get_sta_count() - get connected STA count
  209. * @vdev: vdev
  210. *
  211. * Return: connected STA count
  212. */
  213. uint32_t os_if_son_get_sta_count(struct wlan_objmgr_vdev *vdev);
  214. /**
  215. * os_if_son_get_bssid() - get bssid of given vdev
  216. * @vdev: vdev
  217. * @bssid: pointer to BSSID
  218. *
  219. * Return: 0 if BSSID is gotten successfully
  220. */
  221. int os_if_son_get_bssid(struct wlan_objmgr_vdev *vdev,
  222. uint8_t bssid[QDF_MAC_ADDR_SIZE]);
  223. /**
  224. * os_if_son_get_ssid() - get ssid of given vdev
  225. * @vdev: vdev
  226. * @ssid: pointer to SSID
  227. * @ssid_len: ssid length
  228. *
  229. * Return: 0 if SSID is gotten successfully
  230. */
  231. int os_if_son_get_ssid(struct wlan_objmgr_vdev *vdev,
  232. char ssid[WLAN_SSID_MAX_LEN + 1],
  233. uint8_t *ssid_len);
  234. /**
  235. * os_if_son_set_chan() - set chan
  236. * @vdev: vdev
  237. * @chan: given chan
  238. * @son_band: given band
  239. *
  240. * Return: 0 on success, negative errno on failure
  241. */
  242. int os_if_son_set_chan(struct wlan_objmgr_vdev *vdev,
  243. int chan, enum wlan_band_id son_band);
  244. /**
  245. * os_if_son_set_cac_timeout() - set cac timeout
  246. * @vdev: vdev
  247. * @cac_timeout: cac timeount to set
  248. *
  249. * Return: 0 if cac time out is set successfully
  250. */
  251. int os_if_son_set_cac_timeout(struct wlan_objmgr_vdev *vdev,
  252. int cac_timeout);
  253. /**
  254. * os_if_son_get_cac_timeout() - get cac timeout
  255. * @vdev: vdev
  256. * @cac_timeout: cac timeout to get
  257. *
  258. * Return 0 if cac time out is get successfully
  259. */
  260. int os_if_son_get_cac_timeout(struct wlan_objmgr_vdev *vdev,
  261. int *cac_timeout);
  262. /**
  263. * os_if_son_set_country_code() - set country code
  264. * @vdev: vdev
  265. * @country_code: country code to set
  266. *
  267. * Return: 0 if country code is set successfully
  268. */
  269. int os_if_son_set_country_code(struct wlan_objmgr_vdev *vdev,
  270. char *country_code);
  271. /**
  272. * os_if_son_get_country_code() - get country code
  273. * @vdev: vdev
  274. * @country_code: country code to get
  275. *
  276. * Return: 0 if country code is get successfully
  277. */
  278. int os_if_son_get_country_code(struct wlan_objmgr_vdev *vdev,
  279. char *country_code);
  280. /**
  281. * os_if_son_set_candidate_freq() - set freq to switch after radar detection
  282. * @vdev: vdev
  283. * @freq: freq to switch
  284. *
  285. * Return: 0 if candidate freq is set successfully
  286. */
  287. int os_if_son_set_candidate_freq(struct wlan_objmgr_vdev *vdev,
  288. qdf_freq_t freq);
  289. /**
  290. * os_if_son_get_candidate_freq() - get freq to switch after radar detection
  291. * @vdev: vdev
  292. *
  293. * Return: candidate freq to switch after radar detection
  294. */
  295. qdf_freq_t os_if_son_get_candidate_freq(struct wlan_objmgr_vdev *vdev);
  296. /**
  297. * os_if_son_get_phymode() - get phy mode
  298. * @vdev: vdev
  299. *
  300. * Return: enum ieee80211_phymode
  301. */
  302. enum ieee80211_phymode os_if_son_get_phymode(struct wlan_objmgr_vdev *vdev);
  303. /**
  304. * os_if_son_set_phymode() - set phy mode
  305. * @vdev: vdev
  306. * @mode: son phy mode to set
  307. *
  308. * Return: 0 on success, negative errno on failure
  309. */
  310. int os_if_son_set_phymode(struct wlan_objmgr_vdev *vdev,
  311. enum ieee80211_phymode mode);
  312. /**
  313. * os_if_son_get_phy_stats() - get phy stats
  314. * @vdev: vdev
  315. * @phy_stats: phy stats
  316. *
  317. * Return: void
  318. */
  319. void os_if_son_get_phy_stats(struct wlan_objmgr_vdev *vdev,
  320. struct ol_ath_radiostats *phy_stats);
  321. /**
  322. * os_if_son_cbs_init() - cbs init
  323. * @vdev: vdev
  324. *
  325. * Return: 0 on success, negative errno on failure
  326. */
  327. int os_if_son_cbs_init(void);
  328. /**
  329. * os_if_son_cbs_deinit() - cbs deinit
  330. * @vdev: vdev
  331. *
  332. * Return: 0 on success, negative errno on failure
  333. */
  334. int os_if_son_cbs_deinit(void);
  335. /**
  336. * os_if_son_set_cbs() - enable cbs or disable
  337. * @vdev: vdev
  338. * @enable: true or false
  339. *
  340. * Return: 0 on success, negative errno on failure
  341. */
  342. int os_if_son_set_cbs(struct wlan_objmgr_vdev *vdev,
  343. bool enable);
  344. /**
  345. * os_if_son_set_cbs_wait_time() - set cbs wait time
  346. * @vdev: vdev
  347. * @val: value
  348. *
  349. * Return: 0 on success, negative errno on failure
  350. */
  351. int os_if_son_set_cbs_wait_time(struct wlan_objmgr_vdev *vdev,
  352. uint32_t val);
  353. /**
  354. * os_if_son_set_cbs_dwell_split_time() - set cbs dwell split time
  355. * @vdev: vdev
  356. * @val: value
  357. *
  358. * Return: 0 on success, negative errno on failure
  359. */
  360. int os_if_son_set_cbs_dwell_split_time(struct wlan_objmgr_vdev *vdev,
  361. uint32_t val);
  362. /**
  363. * os_if_son_get_chan_util() - get chan utilization
  364. * @vdev: vdev
  365. *
  366. * Return: chan utilization (0 - 100)
  367. */
  368. uint8_t os_if_son_get_chan_util(struct wlan_objmgr_vdev *vdev);
  369. /**
  370. * os_if_son_pdev_ops() - Handles PDEV specific SON commands
  371. * @pdev: pdev
  372. * @type: SON command to handle
  373. * @data: Input Data
  374. * @ret: Output Data
  375. *
  376. * Return: QDF_SUCCCESS_SUCCESS in case of success
  377. */
  378. QDF_STATUS os_if_son_pdev_ops(struct wlan_objmgr_pdev *pdev,
  379. enum wlan_mlme_pdev_param type,
  380. void *data, void *ret);
  381. /**
  382. * os_if_son_vdev_ops() - Handles VDEV specific SON commands
  383. * @vdev: vdev
  384. * @type: SON command to handle
  385. * @data: Input Data
  386. * @ret: Output Data
  387. *
  388. * Return: QDF_SUCCCESS_SUCCESS in case of success
  389. */
  390. QDF_STATUS os_if_son_vdev_ops(struct wlan_objmgr_vdev *pdev,
  391. enum wlan_mlme_vdev_param type,
  392. void *data, void *ret);
  393. /**
  394. * os_if_son_peer_ops() - Handles PEER specific SON commands
  395. * @peer: peer
  396. * @type: SON command to handle
  397. * @data: Input Data. Pointer to wlan_mlme_peer_data
  398. * @ret: Output Data. Pointer to wlan_mlme_peer_data
  399. *
  400. * Return: QDF_SUCCCESS_SUCCESS in case of success
  401. */
  402. QDF_STATUS os_if_son_peer_ops(struct wlan_objmgr_peer *peer,
  403. enum wlan_mlme_peer_param type,
  404. union wlan_mlme_peer_data *data,
  405. union wlan_mlme_peer_data *ret);
  406. /**
  407. * os_if_son_scan_db_iterate() - get country code
  408. * @pdev: pdev
  409. * @handler: scan_iterator
  410. * @arg: argument to be passed to handler
  411. *
  412. * Return: QDF_SUCCCESS_SUCCESS in case of success
  413. */
  414. QDF_STATUS os_if_son_scan_db_iterate(struct wlan_objmgr_pdev *pdev,
  415. scan_iterator_func handler, void *arg);
  416. /**
  417. * os_if_son_acl_is_probe_wh_set() - Withheld probes for given mac_addr,
  418. * not supported
  419. * @vdev: vdev
  420. * @mac_addr: 6-Byte MAC address
  421. * @probe_rssi: Probe Request RSSI
  422. *
  423. * Return: true / false
  424. */
  425. bool os_if_son_acl_is_probe_wh_set(struct wlan_objmgr_vdev *vdev,
  426. const uint8_t *mac_addr,
  427. uint8_t probe_rssi);
  428. /**
  429. * os_if_son_get_rx_streams() - Gets number of RX spatial streams
  430. * @vdev: target vdev
  431. *
  432. * Return: number of spatial stream
  433. */
  434. uint8_t os_if_son_get_rx_streams(struct wlan_objmgr_vdev *vdev);
  435. /**
  436. * os_if_son_cfg80211_reply() - replies to cfg80211
  437. * @sk_buf: sk_buff to uper layer
  438. *
  439. * Return: QDF_STATUS_SUCCESS on success
  440. */
  441. QDF_STATUS os_if_son_cfg80211_reply(qdf_nbuf_t sk_buf);
  442. /**
  443. * os_if_son_vdev_is_wds() - checks if wds capability is supported or not
  444. * @vdev: Pointer to vdev
  445. *
  446. * Return: true if wds is supported
  447. */
  448. bool os_if_son_vdev_is_wds(struct wlan_objmgr_vdev *vdev);
  449. /*
  450. * os_if_son_set_acl_policy() - set acl policy
  451. * @vdev: vdev
  452. * @son_acl_policy: son acl policy. enum ieee80211_acl_cmd
  453. *
  454. * Return: QDF_STATUS
  455. */
  456. QDF_STATUS os_if_son_set_acl_policy(struct wlan_objmgr_vdev *vdev,
  457. ieee80211_acl_cmd son_acl_policy);
  458. /**
  459. * os_if_son_get_acl_policy() - get acl policy
  460. * @vdev: vdev
  461. *
  462. * Return: acl policy. enum ieee80211_acl_cmd
  463. */
  464. ieee80211_acl_cmd os_if_son_get_acl_policy(struct wlan_objmgr_vdev *vdev);
  465. /**
  466. * os_if_son_add_acl_mac() - add mac to acl
  467. * @vdev: vdev
  468. * @acl_mac: mac to add
  469. *
  470. * Return: 0 on success, negative errno on failure
  471. */
  472. int os_if_son_add_acl_mac(struct wlan_objmgr_vdev *vdev,
  473. struct qdf_mac_addr *acl_mac);
  474. /**
  475. * os_if_son_get_sta_space() - get sta space
  476. * @vdev: target vdev
  477. *
  478. * Return: bytes which is needed to fill sta information
  479. */
  480. uint32_t os_if_son_get_sta_space(struct wlan_objmgr_vdev *vdev);
  481. /**
  482. * os_if_son_get_sta_list() - get sta list
  483. * @vdev: target vdev
  484. * @si: pointer to ieee80211req_sta_info
  485. * @space: space left
  486. *
  487. * Return: void
  488. */
  489. void os_if_son_get_sta_list(struct wlan_objmgr_vdev *vdev,
  490. struct ieee80211req_sta_info *si, uint32_t *space);
  491. /**
  492. * os_if_son_del_acl_mac() - del mac from acl
  493. * @vdev: vdev
  494. * @acl_mac: mac to del
  495. *
  496. * Return: 0 on success, negative errno on failure
  497. */
  498. int os_if_son_del_acl_mac(struct wlan_objmgr_vdev *vdev,
  499. struct qdf_mac_addr *acl_mac);
  500. /**
  501. * os_if_son_kickout_mac() - kickout sta with given mac
  502. * @vdev: vdev
  503. * @acl_mac: sta mac to kickout
  504. *
  505. * Return: 0 on success, negative errno on failure
  506. */
  507. int os_if_son_kickout_mac(struct wlan_objmgr_vdev *vdev,
  508. struct qdf_mac_addr *mac);
  509. /**
  510. * os_if_son_set_chwidth() - set chan width
  511. * @vdev: vdev
  512. * @son_chwidth: son chan width
  513. *
  514. * Return: 0 on success, negative errno on failure
  515. */
  516. int os_if_son_set_chwidth(struct wlan_objmgr_vdev *vdev,
  517. enum ieee80211_cwm_width son_chwidth);
  518. /**
  519. * os_if_son_get_chwidth() - get chan width
  520. * @vdev: vdev
  521. *
  522. * Return: son chan width
  523. */
  524. enum ieee80211_cwm_width os_if_son_get_chwidth(struct wlan_objmgr_vdev *vdev);
  525. /**
  526. * os_if_son_deauth_peer_sta - Deauths specified STA
  527. * @vdev: vdev
  528. * @peer_mac: Target peer MAC address
  529. * @ignore_frame: True to silently deauth the peer
  530. *
  531. * Return: void
  532. */
  533. void os_if_son_deauth_peer_sta(struct wlan_objmgr_vdev *vdev,
  534. uint8_t *peer_mac,
  535. bool ignore_frame);
  536. /**
  537. * os_if_son_modify_acl - Updates ACL with given peer
  538. * @vdev: vdev
  539. * @peer_mac: Target peer MAC address
  540. * @allow_auth: True to allow specified peer to connect
  541. *
  542. * Return: void
  543. */
  544. void os_if_son_modify_acl(struct wlan_objmgr_vdev *vdev,
  545. uint8_t *peer_mac,
  546. bool allow_auth);
  547. /**
  548. * os_if_son_deliver_ald_event() - deliver ald events to son
  549. * @vdev: vdev object
  550. * @peer: peer object
  551. * @event: Name of the event
  552. * @event_data: event data
  553. *
  554. * Return: 0 on success
  555. */
  556. int os_if_son_deliver_ald_event(struct wlan_objmgr_vdev *vdev,
  557. struct wlan_objmgr_peer *peer,
  558. enum ieee80211_event_type event,
  559. void *event_data);
  560. /**
  561. * os_if_son_get_vdev_by_netdev() - Get vdev from net device
  562. * @dev: net device struct
  563. *
  564. * Return: objmgr vdev on success else NULL
  565. */
  566. struct wlan_objmgr_vdev *os_if_son_get_vdev_by_netdev(struct net_device *dev);
  567. /**
  568. * os_if_son_trigger_objmgr_object_deletion() - Trigger objmgr object deletion
  569. * @id: umac component id
  570. *
  571. * Return: QDF_STATUS_SUCCESS on success
  572. */
  573. QDF_STATUS os_if_son_trigger_objmgr_object_deletion(enum wlan_umac_comp_id id);
  574. /**
  575. * os_if_son_trigger_objmgr_object_creation() - Trigger objmgr object creation
  576. * @id: umac component id
  577. *
  578. * Return: QDF_STATUS_SUCCESS on success
  579. */
  580. QDF_STATUS os_if_son_trigger_objmgr_object_creation(enum wlan_umac_comp_id id);
  581. /**
  582. * os_if_son_start_acs() - Triggers ACS on the target vdev
  583. * @vdev: target vdev
  584. * @enable: True - to start ACS
  585. *
  586. * Return: 0 on success
  587. */
  588. int os_if_son_start_acs(struct wlan_objmgr_vdev *vdev, uint8_t enable);
  589. /**
  590. * os_if_son_set_acs_chan() - Set channel list for ACS
  591. * @vdev: target vdev
  592. * @req: channel list
  593. *
  594. * Return: 0 on success
  595. */
  596. int os_if_son_set_acs_chan(struct wlan_objmgr_vdev *vdev,
  597. struct ieee80211req_athdbg *req);
  598. /**
  599. * os_if_son_get_acs_report() - Get ACS report
  600. * @vdev: target vdev
  601. * @acs_r: ACS report structure
  602. *
  603. * Return: 0 on success
  604. */
  605. int os_if_son_get_acs_report(struct wlan_objmgr_vdev *vdev,
  606. struct ieee80211_acs_dbg *acs_r);
  607. #endif