1 /* 2 * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. 3 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 /** 21 * DOC: declares nan component os interface APIs 22 */ 23 24 #ifndef _OS_IF_NAN_H_ 25 #define _OS_IF_NAN_H_ 26 27 #include "qdf_types.h" 28 #ifdef WLAN_FEATURE_NAN 29 #include "nan_public_structs.h" 30 #include "nan_ucfg_api.h" 31 #include "qca_vendor.h" 32 33 /* QCA_NL80211_VENDOR_SUBCMD_NAN_EXT policy */ 34 extern const struct nla_policy nan_attr_policy[ 35 QCA_WLAN_VENDOR_ATTR_NAN_PARAMS_MAX + 1]; 36 37 /* QCA_NL80211_VENDOR_SUBCMD_NDP policy */ 38 extern const struct nla_policy vendor_attr_policy[ 39 QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX + 1]; 40 41 /** 42 * struct ndi_find_vdev_filter - find vdev filter object. this can be extended 43 * @ifname: interface name of vdev 44 * @found_vdev: found vdev object matching one or more of above params 45 */ 46 struct ndi_find_vdev_filter { 47 const char *ifname; 48 struct wlan_objmgr_vdev *found_vdev; 49 }; 50 51 /** 52 * os_if_nan_process_ndp_cmd: os_if api to handle nan request message 53 * @psoc: pointer to psoc object 54 * @data: request data. contains vendor cmd tlvs 55 * @data_len: length of data 56 * @is_ndp_allowed: Indicates whether to allow NDP creation. 57 * NDI creation is always allowed. 58 * @wdev: Wireless device structure pointer 59 * 60 * Return: status of operation 61 */ 62 int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc, 63 const void *data, int data_len, 64 bool is_ndp_allowed, 65 struct wireless_dev *wdev); 66 67 /** 68 * os_if_nan_register_hdd_callbacks: os_if api to register hdd callbacks 69 * @psoc: pointer to psoc object 70 * @cb_obj: struct pointer containing callbacks 71 * 72 * Return: status of operation 73 */ 74 int os_if_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc, 75 struct nan_callbacks *cb_obj); 76 77 /** 78 * os_if_nan_register_lim_callbacks: os_if api to register lim callbacks 79 * @psoc: pointer to psoc object 80 * @cb_obj: struct pointer containing callbacks 81 * 82 * Return: status of operation 83 */ 84 int os_if_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc, 85 struct nan_callbacks *cb_obj); 86 87 /** 88 * os_if_nan_post_ndi_create_rsp: os_if api to pos ndi create rsp to umac nan 89 * component 90 * @psoc: pointer to psoc object 91 * @vdev_id: vdev id of ndi 92 * @success: if create was success or failure 93 * 94 * Return: None 95 */ 96 void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc, 97 uint8_t vdev_id, bool success); 98 99 /** 100 * os_if_nan_post_ndi_delete_rsp: os_if api to pos ndi delete rsp to umac nan 101 * component 102 * @psoc: pointer to psoc object 103 * @vdev_id: vdev id of ndi 104 * @success: if delete was success or failure 105 * 106 * Return: None 107 */ 108 void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc, 109 uint8_t vdev_id, bool success); 110 111 /** 112 * os_if_nan_ndi_session_end: os_if api to process ndi session end 113 * component 114 * @vdev: pointer to vdev deleted 115 * 116 * Return: None 117 */ 118 void os_if_nan_ndi_session_end(struct wlan_objmgr_vdev *vdev); 119 120 /** 121 * os_if_nan_set_ndi_state: os_if api set NDI state 122 * @vdev: pointer to vdev deleted 123 * @state: value to set 124 * 125 * Return: status of operation 126 */ 127 static inline QDF_STATUS os_if_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev, 128 uint32_t state) 129 { 130 return ucfg_nan_set_ndi_state(vdev, state); 131 } 132 133 /** 134 * os_if_nan_set_ndp_create_transaction_id: set ndp create transaction id 135 * @vdev: pointer to vdev object 136 * @val: value to set 137 * 138 * Return: status of operation 139 */ 140 static inline QDF_STATUS os_if_nan_set_ndp_create_transaction_id( 141 struct wlan_objmgr_vdev *vdev, 142 uint16_t val) 143 { 144 return ucfg_nan_set_ndp_create_transaction_id(vdev, val); 145 } 146 147 /** 148 * os_if_nan_set_ndp_delete_transaction_id: set ndp delete transaction id 149 * @vdev: pointer to vdev object 150 * @val: value to set 151 * 152 * Return: status of operation 153 */ 154 static inline QDF_STATUS os_if_nan_set_ndp_delete_transaction_id( 155 struct wlan_objmgr_vdev *vdev, 156 uint16_t val) 157 { 158 return ucfg_nan_set_ndp_delete_transaction_id(vdev, val); 159 } 160 161 /** 162 * os_if_process_nan_req: os_if api to handle NAN requests attached to the 163 * vendor command QCA_NL80211_VENDOR_SUBCMD_NAN_EXT 164 * @pdev: pointer to pdev object 165 * @vdev_id: NAN vdev id 166 * @data: request data. contains vendor cmd tlvs 167 * @data_len: length of data 168 * 169 * Return: status of operation 170 */ 171 int os_if_process_nan_req(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id, 172 const void *data, int data_len); 173 #else 174 175 static inline void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc, 176 uint8_t vdev_id, bool success) 177 { 178 } 179 180 static inline void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc, 181 uint8_t vdev_id, bool success) 182 { 183 } 184 185 #endif /* WLAN_FEATURE_NAN */ 186 187 #endif 188