|
@@ -20,3 +20,277 @@
|
|
|
* DOC: contains interface definitions for OS_IF layer
|
|
|
*/
|
|
|
|
|
|
+#include "nan_ucfg_api.h"
|
|
|
+#include "nan_public_structs.h"
|
|
|
+#include "../../core/src/nan_main_i.h"
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
|
|
|
+ uint32_t state)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->state = state;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline enum nan_datapath_state ucfg_nan_get_ndi_state(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ enum nan_datapath_state val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return NAN_DATA_INVALID_STATE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->state;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_active_peers(struct wlan_objmgr_vdev *vdev,
|
|
|
+ uint32_t val)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->active_ndp_peers = val;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline uint32_t ucfg_nan_get_active_peers(struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ uint32_t val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->active_ndp_peers;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_active_ndp_sessions(
|
|
|
+ struct wlan_objmgr_vdev *vdev, uint32_t val, uint8_t idx)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (idx > MAX_PEERS) {
|
|
|
+ nan_err("peer_idx(%d) is greater than MAX(%d) is null",
|
|
|
+ idx, MAX_PEERS);
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->active_ndp_sessions[idx] = val;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline uint32_t ucfg_nan_get_active_ndp_sessions(struct wlan_objmgr_vdev *vdev,
|
|
|
+ uint8_t idx)
|
|
|
+{
|
|
|
+ uint32_t val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (idx > MAX_PEERS) {
|
|
|
+ nan_err("peer_idx(%d) is greater than MAX(%d) is null",
|
|
|
+ idx, MAX_PEERS);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->active_ndp_sessions[idx];
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_ndp_create_transaction_id(
|
|
|
+ struct wlan_objmgr_vdev *vdev, uint16_t val)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->ndp_create_transaction_id = val;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline uint16_t ucfg_nan_get_ndp_create_transaction_id(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ uint16_t val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->ndp_create_transaction_id;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_ndp_delete_transaction_id(
|
|
|
+ struct wlan_objmgr_vdev *vdev, uint16_t val)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->ndp_delete_transaction_id = val;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline uint16_t ucfg_nan_get_ndp_delete_transaction_id(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ uint16_t val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->ndp_delete_transaction_id;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_ndi_delete_rsp_reason(
|
|
|
+ struct wlan_objmgr_vdev *vdev, uint32_t val)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->ndi_delete_rsp_reason = val;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline uint32_t ucfg_nan_get_ndi_delete_rsp_reason(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ uint32_t val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->ndi_delete_rsp_reason;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_set_ndi_delete_rsp_status(
|
|
|
+ struct wlan_objmgr_vdev *vdev, uint32_t val)
|
|
|
+{
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ priv_obj->ndi_delete_rsp_status = val;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|
|
|
+
|
|
|
+inline uint32_t ucfg_nan_get_ndi_delete_rsp_status(
|
|
|
+ struct wlan_objmgr_vdev *vdev)
|
|
|
+{
|
|
|
+ uint32_t val;
|
|
|
+ struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
|
|
|
+
|
|
|
+ if (!priv_obj) {
|
|
|
+ nan_err("priv_obj is null");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ qdf_spin_lock_bh(&priv_obj->lock);
|
|
|
+ val = priv_obj->ndi_delete_rsp_status;
|
|
|
+ qdf_spin_unlock_bh(&priv_obj->lock);
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+
|
|
|
+inline QDF_STATUS ucfg_nan_get_callbacks(struct wlan_objmgr_psoc *psoc,
|
|
|
+ struct nan_callbacks *cb_obj)
|
|
|
+{
|
|
|
+ struct nan_psoc_priv_obj *psoc_obj = nan_get_psoc_priv_obj(psoc);
|
|
|
+
|
|
|
+ if (!psoc_obj) {
|
|
|
+ nan_err("nan psoc priv object is NULL");
|
|
|
+ return QDF_STATUS_E_NULL_VALUE;
|
|
|
+ }
|
|
|
+ qdf_spin_lock_bh(&psoc_obj->lock);
|
|
|
+ qdf_mem_copy(cb_obj, &psoc_obj->cb_obj, sizeof(*cb_obj));
|
|
|
+ qdf_spin_unlock_bh(&psoc_obj->lock);
|
|
|
+
|
|
|
+ return QDF_STATUS_SUCCESS;
|
|
|
+}
|