qcacld-3.0: Add bearer switch infra
When there are more than one audio transport mediums are available, there is a possibility to switch the audio transport medium from one medium to another medium. To provide this support to switch the audio transport medium, add a bearer switch infra in host driver. Change-Id: I9d828d52a2c03e8e4e2c0a284ff0dd7510798dbe CRs-Fixed: 3609864
This commit is contained in:

committed by
Rahul Choudhary

parent
e7b1f57b67
commit
44ac03a6ee
9
Kbuild
9
Kbuild
@@ -1643,8 +1643,10 @@ MLME_INC += $(LL_SAP_INC)
|
||||
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_LL_LT_SAP), y)
|
||||
MLME_OBJS += $(LL_SAP_DIR)/dispatcher/src/wlan_ll_sap_ucfg_api.o \
|
||||
$(LL_SAP_DIR)/dispatcher/src/wlan_ll_sap_api.o \
|
||||
$(LL_SAP_DIR)/core/src/wlan_ll_sap_main.o \
|
||||
$(LL_SAP_DIR)/core/src/wlan_ll_lt_sap_main.o
|
||||
$(LL_SAP_DIR)/core/src/wlan_ll_lt_sap_main.o \
|
||||
$(LL_SAP_DIR)/core/src/wlan_ll_lt_sap_bearer_switch.o
|
||||
endif
|
||||
|
||||
$(call add-wlan-objs,mlme,$(MLME_OBJS))
|
||||
@@ -1844,7 +1846,10 @@ POLICY_MGR_OBJS := $(POLICY_MGR_DIR)/src/wlan_policy_mgr_action.o \
|
||||
$(POLICY_MGR_DIR)/src/wlan_policy_mgr_get_set_utils.o \
|
||||
$(POLICY_MGR_DIR)/src/wlan_policy_mgr_init_deinit.o \
|
||||
$(POLICY_MGR_DIR)/src/wlan_policy_mgr_ucfg.o \
|
||||
$(POLICY_MGR_DIR)/src/wlan_policy_mgr_pcl.o \
|
||||
$(POLICY_MGR_DIR)/src/wlan_policy_mgr_pcl.o
|
||||
ifeq ($(CONFIG_WLAN_FEATURE_LL_LT_SAP), y)
|
||||
POLICY_MGR_OBJS += $(POLICY_MGR_DIR)/src/wlan_policy_mgr_ll_sap.o
|
||||
endif
|
||||
|
||||
$(call add-wlan-objs,policy_mgr,$(POLICY_MGR_OBJS))
|
||||
|
||||
|
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: contains policy manager ll_sap definitions specific to the ll_sap module
|
||||
*/
|
||||
|
||||
#include "wlan_objmgr_psoc_obj.h"
|
||||
|
||||
/**
|
||||
* wlan_policy_mgr_get_ll_lt_sap_vdev() - Get ll_lt_sap vdev
|
||||
* @psoc: PSOC object
|
||||
*
|
||||
* API to find ll_lt_sap vdev pointer
|
||||
*
|
||||
* This API increments the ref count of the vdev object internally, the
|
||||
* caller has to invoke the wlan_objmgr_vdev_release_ref() to decrement
|
||||
* ref count
|
||||
*
|
||||
* Return: vdev pointer
|
||||
* NULL on FAILURE
|
||||
*/
|
||||
struct wlan_objmgr_vdev *
|
||||
wlan_policy_mgr_get_ll_lt_sap_vdev(struct wlan_objmgr_psoc *psoc);
|
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: contains policy manager ll_sap definitions specific to the ll_sap module
|
||||
*/
|
||||
|
||||
#include "wlan_policy_mgr_ll_sap.h"
|
||||
#include "wlan_policy_mgr_public_struct.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "wlan_cmn.h"
|
||||
|
||||
struct wlan_objmgr_vdev *
|
||||
wlan_policy_mgr_get_ll_lt_sap_vdev(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
uint8_t ll_lt_sap_cnt;
|
||||
uint8_t vdev_id_list[MAX_NUMBER_OF_CONC_CONNECTIONS];
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
ll_lt_sap_cnt = policy_mgr_get_mode_specific_conn_info(
|
||||
psoc, NULL,
|
||||
vdev_id_list,
|
||||
PM_LL_LT_SAP_MODE);
|
||||
|
||||
/* Currently only 1 ll_lt_sap is supported */
|
||||
if (ll_lt_sap_cnt != 1) {
|
||||
policy_mgr_err("invalid number of ll_lt_sap %d", ll_lt_sap_cnt);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id_list[0],
|
||||
WLAN_LL_SAP_ID);
|
||||
if (!vdev)
|
||||
policy_mgr_err("vdev is NULL");
|
||||
return vdev;
|
||||
}
|
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "wlan_ll_sap_main.h"
|
||||
#include "wlan_ll_lt_sap_bearer_switch.h"
|
||||
|
||||
uint32_t ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
uint32_t request_id;
|
||||
struct ll_sap_vdev_priv_obj *ll_sap_obj;
|
||||
|
||||
ll_sap_obj = ll_sap_get_vdev_priv_obj(vdev);
|
||||
|
||||
if (!ll_sap_obj) {
|
||||
ll_sap_err("vdev %d ll_sap obj null",
|
||||
wlan_vdev_get_id(vdev));
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
request_id = qdf_atomic_inc_return(
|
||||
&ll_sap_obj->bearer_switch_ctx->request_id);
|
||||
|
||||
ll_sap_debug("bearer_switch request_id %d", request_id);
|
||||
return request_id;
|
||||
}
|
||||
|
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: contains ll_lt_sap declarations specific to the bearer
|
||||
* switch functionalities
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_LL_LT_SAP_BEARER_SWITCH_H_
|
||||
#define _WLAN_LL_LT_SAP_BEARER_SWITCH_H_
|
||||
|
||||
#include "wlan_ll_sap_public_structs.h"
|
||||
#include <qdf_atomic.h>
|
||||
#include "wlan_cmn.h"
|
||||
#include "wlan_ll_sap_main.h"
|
||||
|
||||
/**
|
||||
* enum bearer_switch_status: Bearer switch request status
|
||||
* @XPAN_BLE_SWITCH_INIT: Init status
|
||||
* @XPAN_BLE_SWITCH_SUCCESS: Bearer switch success
|
||||
* @XPAN_BLE_SWITCH_REJECTED: Bearer switch is rejected
|
||||
* @XPAN_BLE_SWITCH_TIMEOUT: Bearer switch request timed out
|
||||
*/
|
||||
enum bearer_switch_status {
|
||||
XPAN_BLE_SWITCH_INIT,
|
||||
XPAN_BLE_SWITCH_SUCCESS,
|
||||
XPAN_BLE_SWITCH_REJECTED,
|
||||
XPAN_BLE_SWITCH_TIMEOUT,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct bearer_switch_request - Data structure to store the bearer switch
|
||||
* request
|
||||
* @requester_cb: Callback which needs to be invoked to indicate the status of
|
||||
* the request to the requester, this callback will be passed by the requester
|
||||
* when requester will send the request.
|
||||
* @arg: Argument passed by requester, this will be returned back in the
|
||||
* callback
|
||||
* @request_id: Unique value to identify the request
|
||||
*/
|
||||
|
||||
struct bearer_switch_request {
|
||||
requester_callback requester_cb;
|
||||
void *arg;
|
||||
uint32_t request_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct bearer_switch_info - Data structure to store the bearer switch
|
||||
* requests and related information
|
||||
* @request_id: Last allocated request id
|
||||
* @ref_count: Reference count corresponding to each vdev and requester
|
||||
* @last_status: last status of the bearer switch request
|
||||
* @requests: Array of bearer_switch_requests to cache the request information
|
||||
*/
|
||||
struct bearer_switch_info {
|
||||
qdf_atomic_t request_id;
|
||||
uint8_t ref_count[WLAN_UMAC_PSOC_MAX_VDEVS][XPAN_BLE_SWITCH_REQUESTER_MAX];
|
||||
enum bearer_switch_status last_status;
|
||||
struct bearer_switch_request requests[MAX_BEARER_SWITCH_REQUESTERS];
|
||||
};
|
||||
|
||||
/**
|
||||
* ll_lt_sap_bearer_switch_get_id() - Get the request id for bearer switch
|
||||
* request
|
||||
* @vdev: Pointer to vdev
|
||||
* Return: Bearer switch request id
|
||||
*/
|
||||
uint32_t ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev);
|
||||
#endif /* _WLAN_LL_LT_SAP_BEARER_SWITCH_H_ */
|
@@ -17,6 +17,8 @@
|
||||
#include "wlan_ll_lt_sap_main.h"
|
||||
#include "wlan_scan_ucfg_api.h"
|
||||
#include "wlan_mlme_vdev_mgr_interface.h"
|
||||
#include "wlan_ll_sap_main.h"
|
||||
#include "wlan_ll_lt_sap_bearer_switch.h"
|
||||
|
||||
bool ll_lt_sap_is_supported(void)
|
||||
{
|
||||
@@ -69,3 +71,45 @@ rel_ref:
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
QDF_STATUS ll_lt_sap_init(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct ll_sap_vdev_priv_obj *ll_sap_obj;
|
||||
|
||||
ll_sap_obj = ll_sap_get_vdev_priv_obj(vdev);
|
||||
|
||||
if (!ll_sap_obj) {
|
||||
ll_sap_err("vdev %d ll_sap obj null",
|
||||
wlan_vdev_get_id(vdev));
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
ll_sap_obj->bearer_switch_ctx =
|
||||
qdf_mem_malloc(sizeof(struct bearer_switch_info));
|
||||
if (!ll_sap_obj->bearer_switch_ctx)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
qdf_atomic_init(&ll_sap_obj->bearer_switch_ctx->request_id);
|
||||
ll_sap_debug("vdev %d", wlan_vdev_get_id(vdev));
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS ll_lt_sap_deinit(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct ll_sap_vdev_priv_obj *ll_sap_obj;
|
||||
|
||||
ll_sap_obj = ll_sap_get_vdev_priv_obj(vdev);
|
||||
|
||||
if (!ll_sap_obj) {
|
||||
ll_sap_err("vdev %d ll_sap obj null",
|
||||
wlan_vdev_get_id(vdev));
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
if (ll_sap_obj->bearer_switch_ctx)
|
||||
qdf_mem_free(ll_sap_obj->bearer_switch_ctx);
|
||||
ll_sap_debug("vdev %d", wlan_vdev_get_id(vdev));
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -23,6 +23,9 @@
|
||||
|
||||
#include "wlan_ll_sap_main.h"
|
||||
#include "wlan_mlme_public_struct.h"
|
||||
#include <i_qdf_types.h>
|
||||
#include <qdf_types.h>
|
||||
#include "wlan_ll_sap_main.h"
|
||||
|
||||
/**
|
||||
* ll_lt_sap_is_supported() - Check if ll_lt_sap is supported or not
|
||||
@@ -44,4 +47,21 @@ QDF_STATUS ll_lt_sap_get_sorted_user_config_acs_ch_list(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id,
|
||||
struct sap_sel_ch_info *ch_info);
|
||||
/*
|
||||
* ll_lt_sap_init() - Initialize ll_lt_sap infrastructure
|
||||
* @vdev: Pointer to vdev
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS if ll_lt_sap infra initialized successfully else
|
||||
* error code
|
||||
*/
|
||||
QDF_STATUS ll_lt_sap_init(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* ll_lt_sap_deinit() - De-initialize ll_lt_sap infrastructure
|
||||
* @vdev: Pointer to vdev
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS if ll_lt_sap infra de-initialized successfully
|
||||
* else error code
|
||||
*/
|
||||
QDF_STATUS ll_lt_sap_deinit(struct wlan_objmgr_vdev *vdev);
|
||||
#endif /* _WLAN_LL_SAP_MAIN_H_ */
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include "wlan_ll_sap_main.h"
|
||||
#include <wlan_objmgr_global_obj.h>
|
||||
#include "qca_vendor.h"
|
||||
#include "wlan_ll_lt_sap_main.h"
|
||||
|
||||
static QDF_STATUS ll_sap_psoc_obj_created_notification(struct wlan_objmgr_psoc *psoc, void *arg_list)
|
||||
{
|
||||
@@ -39,6 +40,75 @@ static QDF_STATUS ll_sap_psoc_obj_destroyed_notification(struct wlan_objmgr_psoc
|
||||
/* detach ll_sap_psoc object which will contain cfg items,
|
||||
* tx and rx ops
|
||||
*/
|
||||
return status;
|
||||
}
|
||||
|
||||
static QDF_STATUS ll_sap_vdev_obj_created_notification(
|
||||
struct wlan_objmgr_vdev *vdev, void *arg_list)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
struct ll_sap_vdev_priv_obj *ll_sap_obj;
|
||||
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) != QDF_SAP_MODE)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
ll_sap_obj = qdf_mem_malloc(sizeof(*ll_sap_obj));
|
||||
if (!ll_sap_obj)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
status = wlan_objmgr_vdev_component_obj_attach(
|
||||
vdev,
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
(void *)ll_sap_obj,
|
||||
QDF_STATUS_SUCCESS);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
ll_sap_err("vdev %d obj attach failed", wlan_vdev_get_id(vdev));
|
||||
goto ll_sap_vdev_attach_failed;
|
||||
}
|
||||
|
||||
status = ll_lt_sap_init(vdev);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto ll_sap_init_failed;
|
||||
|
||||
return status;
|
||||
|
||||
ll_sap_init_failed:
|
||||
wlan_objmgr_vdev_component_obj_detach(vdev,
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_obj);
|
||||
|
||||
ll_sap_vdev_attach_failed:
|
||||
qdf_mem_free(ll_sap_obj);
|
||||
return status;
|
||||
}
|
||||
|
||||
static QDF_STATUS ll_sap_vdev_obj_destroyed_notification(
|
||||
struct wlan_objmgr_vdev *vdev, void *arg_list)
|
||||
{
|
||||
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||
struct ll_sap_vdev_priv_obj *ll_sap_obj;
|
||||
|
||||
if (wlan_vdev_mlme_get_opmode(vdev) != QDF_SAP_MODE)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
ll_sap_obj = ll_sap_get_vdev_priv_obj(vdev);
|
||||
|
||||
if (!ll_sap_obj) {
|
||||
ll_sap_err("vdev %d ll sap obj null",
|
||||
wlan_vdev_get_id(vdev));
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
status = wlan_objmgr_vdev_component_obj_detach(vdev,
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_obj);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
ll_sap_err("vdev %d ll sap obj detach failed, status %d",
|
||||
wlan_vdev_get_id(vdev), status);
|
||||
|
||||
ll_lt_sap_deinit(vdev);
|
||||
|
||||
qdf_mem_free(ll_sap_obj);
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -62,10 +132,48 @@ QDF_STATUS ll_sap_init(void)
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
ll_sap_err("objmgr_register_psoc_destroy_handler failed");
|
||||
wlan_objmgr_unregister_psoc_create_handler(WLAN_UMAC_COMP_LL_SAP,
|
||||
goto err_psoc_destroy_reg;
|
||||
}
|
||||
|
||||
/* register vdev create handler functions. */
|
||||
status = wlan_objmgr_register_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_vdev_obj_created_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
ll_sap_err("objmgr_register_vdev_create_handler failed");
|
||||
goto err_vdev_create_reg;
|
||||
}
|
||||
|
||||
/* register vdev delete handler functions. */
|
||||
status = wlan_objmgr_register_vdev_destroy_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_vdev_obj_destroyed_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
ll_sap_err("objmgr_register_vdev_destroy_handler failed");
|
||||
goto err_vdev_destroy_reg;
|
||||
}
|
||||
|
||||
return status;
|
||||
err_vdev_destroy_reg:
|
||||
wlan_objmgr_unregister_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_vdev_obj_created_notification,
|
||||
NULL);
|
||||
|
||||
err_vdev_create_reg:
|
||||
wlan_objmgr_unregister_psoc_destroy_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_psoc_obj_destroyed_notification,
|
||||
NULL);
|
||||
|
||||
err_psoc_destroy_reg:
|
||||
wlan_objmgr_unregister_psoc_create_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_psoc_obj_created_notification,
|
||||
NULL);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -73,6 +181,26 @@ QDF_STATUS ll_sap_deinit(void)
|
||||
{
|
||||
QDF_STATUS ret = QDF_STATUS_SUCCESS, status;
|
||||
|
||||
/* de-register vdev delete handler functions. */
|
||||
status = wlan_objmgr_unregister_vdev_destroy_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_vdev_obj_destroyed_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
ll_sap_err("objmgr_unregister_vdev_destroy_handler failed");
|
||||
ret = status;
|
||||
}
|
||||
|
||||
/* de-register vdev create handler functions. */
|
||||
status = wlan_objmgr_unregister_vdev_create_handler(
|
||||
WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_vdev_obj_created_notification,
|
||||
NULL);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
ll_sap_err("objmgr_unregister_vdev_create_handler failed");
|
||||
ret = status;
|
||||
}
|
||||
|
||||
/* unregister psoc destroy handler functions. */
|
||||
status = wlan_objmgr_unregister_psoc_destroy_handler(WLAN_UMAC_COMP_LL_SAP,
|
||||
ll_sap_psoc_obj_destroyed_notification,
|
||||
|
@@ -22,6 +22,7 @@
|
||||
#define _WLAN_LL_SAP_MAIN_H_
|
||||
|
||||
#include "wlan_objmgr_psoc_obj.h"
|
||||
#include "wlan_objmgr_vdev_obj.h"
|
||||
|
||||
#define ll_sap_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_LL_SAP, params)
|
||||
#define ll_sap_info(params...) QDF_TRACE_INFO(QDF_MODULE_ID_LL_SAP, params)
|
||||
@@ -34,6 +35,36 @@
|
||||
#define ll_sap_nofl_debug(params...) \
|
||||
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_LL_SAP, params)
|
||||
|
||||
/**
|
||||
* struct ll_sap_vdev_priv_obj - ll sap private vdev obj
|
||||
* @bearer_switch_ctx: Bearer switch context
|
||||
*/
|
||||
struct ll_sap_vdev_priv_obj {
|
||||
struct bearer_switch_info *bearer_switch_ctx;
|
||||
};
|
||||
|
||||
/**
|
||||
* ll_sap_get_vdev_priv_obj: get ll_sap priv object from vdev object
|
||||
* @vdev: pointer to vdev object
|
||||
*
|
||||
* Return: pointer to ll_sap vdev private object
|
||||
*/
|
||||
static inline
|
||||
struct ll_sap_vdev_priv_obj *ll_sap_get_vdev_priv_obj(
|
||||
struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct ll_sap_vdev_priv_obj *obj;
|
||||
|
||||
if (!vdev) {
|
||||
ll_sap_err("vdev is null");
|
||||
return NULL;
|
||||
}
|
||||
obj = wlan_objmgr_vdev_get_comp_private_obj(vdev,
|
||||
WLAN_UMAC_COMP_LL_SAP);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* ll_sap_init() - initializes ll_sap component
|
||||
*
|
||||
|
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: contains ll_lt_sap API definitions specific to the bearer
|
||||
* switch functionalities
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_LL_LT_SAP_API_H_
|
||||
#define _WLAN_LL_LT_SAP_API_H_
|
||||
|
||||
#include <wlan_cmn.h>
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
|
||||
#ifdef WLAN_FEATURE_LL_LT_SAP
|
||||
|
||||
/**
|
||||
* wlan_ll_lt_sap_bearer_switch_get_id() - Get the request id for bearer switch
|
||||
* request
|
||||
* @vdev: Pointer to vdev
|
||||
* Return: Bearer switch request id
|
||||
*/
|
||||
uint32_t wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev);
|
||||
#else
|
||||
|
||||
static inline uint32_t
|
||||
wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* WLAN_FEATURE_LL_LT_SAP */
|
||||
#endif /* _WLAN_LL_LT_SAP_API_H_ */
|
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: contains ll_lt_sap structure definitions specific to the bearer
|
||||
* switch functionalities
|
||||
*/
|
||||
|
||||
#ifndef _WLAN_LL_LT_SAP_BEARER_SWITCH_PUBLIC_STRUCTS_H_
|
||||
#define _WLAN_LL_LT_SAP_BEARER_SWITCH_PUBLIC_STRUCTS_H_
|
||||
|
||||
#include "wlan_objmgr_psoc_obj.h"
|
||||
#include <qdf_status.h>
|
||||
|
||||
/* Indicates MAX bearer switch requesters at a time */
|
||||
#define MAX_BEARER_SWITCH_REQUESTERS 5
|
||||
|
||||
/**
|
||||
* enum bearer_switch_requester_source: Bearer switch requester source
|
||||
* @XPAN_BLE_SWITCH_REQUESTER_CONNECT: Bearer switch requester is connect
|
||||
* @XPAN_BLE_SWITCH_REQUESTER_CSA: Bearer switch requester is CSA
|
||||
* @XPAN_BLE_SWITCH_REQUESTER_FW: Bearer switch requester is FW
|
||||
* @XPAN_BLE_SWITCH_REQUESTER_MAX: Indicates MAX bearer switch requester
|
||||
*/
|
||||
enum bearer_switch_requester_source {
|
||||
XPAN_BLE_SWITCH_REQUESTER_CONNECT,
|
||||
XPAN_BLE_SWITCH_REQUESTER_CSA,
|
||||
XPAN_BLE_SWITCH_REQUESTER_FW,
|
||||
XPAN_BLE_SWITCH_REQUESTER_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
* typedef requester_callback() - Callback function, which will be invoked with
|
||||
* the bearer switch request status.
|
||||
* @psoc: Psoc pointer
|
||||
* @request_id: Request ID
|
||||
* @status: Status of the bearer switch request
|
||||
* @request_params: Request params for the bearer switch request
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
|
||||
typedef void (*requester_callback)(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id, uint32_t request_id,
|
||||
QDF_STATUS status,
|
||||
void *request_params);
|
||||
|
||||
#endif /* _WLAN_LL_LT_SAP_BEARER_SWITCH_PUBLIC_STRUCTS_H_ */
|
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "wlan_ll_sap_api.h"
|
||||
#include <../../core/src/wlan_ll_lt_sap_bearer_switch.h>
|
||||
#include <../../core/src/wlan_ll_lt_sap_main.h>
|
||||
|
||||
uint32_t wlan_ll_lt_sap_bearer_switch_get_id(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return ll_lt_sap_bearer_switch_get_id(vdev);
|
||||
}
|
@@ -2091,9 +2091,12 @@ _conditional_srcs = {
|
||||
},
|
||||
"CONFIG_WLAN_FEATURE_LL_LT_SAP": {
|
||||
True: [
|
||||
"components/umac/mlme/sap/ll_sap/dispatcher/src/wlan_ll_sap_api.c",
|
||||
"components/umac/mlme/sap/ll_sap/dispatcher/src/wlan_ll_sap_ucfg_api.c",
|
||||
"components/umac/mlme/sap/ll_sap/core/src/wlan_ll_lt_sap_bearer_switch.c",
|
||||
"components/umac/mlme/sap/ll_sap/core/src/wlan_ll_lt_sap_main.c",
|
||||
"components/umac/mlme/sap/ll_sap/core/src/wlan_ll_sap_main.c",
|
||||
"components/cmn_services/policy_mgr/src/wlan_policy_mgr_ll_sap.c",
|
||||
],
|
||||
},
|
||||
}
|
||||
|
Reference in New Issue
Block a user