qcacmn: create the vdev response timers in psoc_mlme
Move the vdev response timer from the vdev object manager structure to the psoc mlme structure. Change-Id: Ieb87ac6549aa23e0beb61441fea459d3db78c2f3 CRs-Fixed: 2563410
Bu işleme şunda yer alıyor:
@@ -40,4 +40,12 @@ QDF_STATUS wlan_psoc_mlme_init(void);
|
||||
*/
|
||||
QDF_STATUS wlan_psoc_mlme_deinit(void);
|
||||
|
||||
/**
|
||||
* mlme_psoc_get_priv: get MLME priv object from psoc object
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Return: pointer to MLME psoc private object
|
||||
*/
|
||||
struct psoc_mlme_obj *mlme_psoc_get_priv(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
#endif
|
||||
|
@@ -26,6 +26,20 @@
|
||||
#include <wlan_psoc_mlme_main.h>
|
||||
#include <wlan_psoc_mlme_api.h>
|
||||
|
||||
struct psoc_mlme_obj *mlme_psoc_get_priv(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct psoc_mlme_obj *psoc_mlme;
|
||||
|
||||
psoc_mlme = wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
||||
WLAN_UMAC_COMP_MLME);
|
||||
if (!psoc_mlme) {
|
||||
mlme_err("PSOC MLME component object is NULL");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return psoc_mlme;
|
||||
}
|
||||
|
||||
static QDF_STATUS mlme_psoc_obj_create_handler(struct wlan_objmgr_psoc *psoc,
|
||||
void *arg)
|
||||
{
|
||||
@@ -67,10 +81,9 @@ static QDF_STATUS mlme_psoc_obj_destroy_handler(struct wlan_objmgr_psoc *psoc,
|
||||
{
|
||||
struct psoc_mlme_obj *psoc_mlme;
|
||||
|
||||
psoc_mlme = wlan_objmgr_psoc_get_comp_private_obj(psoc,
|
||||
WLAN_UMAC_COMP_MLME);
|
||||
psoc_mlme = mlme_psoc_get_priv(psoc);
|
||||
if (!psoc_mlme) {
|
||||
mlme_err(" PSOC MLME component object is NULL");
|
||||
mlme_err("PSOC MLME component object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
|
@@ -22,23 +22,28 @@
|
||||
#include <wlan_objmgr_global_obj.h>
|
||||
#include <wlan_objmgr_vdev_obj.h>
|
||||
#include <wlan_mlme_dbg.h>
|
||||
#include "include/wlan_mlme_cmn.h"
|
||||
#include "include/wlan_vdev_mlme.h"
|
||||
#include "include/wlan_pdev_mlme.h"
|
||||
#include "vdev_mgr/core/src/vdev_mlme_sm.h"
|
||||
#include "wlan_pdev_mlme_api.h"
|
||||
#include "wlan_vdev_mlme_api.h"
|
||||
#include "wlan_serialization_api.h"
|
||||
#include "wlan_utility.h"
|
||||
#include <include/wlan_mlme_cmn.h>
|
||||
#include <include/wlan_vdev_mlme.h>
|
||||
#include <include/wlan_pdev_mlme.h>
|
||||
#include <vdev_mgr/core/src/vdev_mlme_sm.h>
|
||||
#include <wlan_pdev_mlme_api.h>
|
||||
#include <wlan_vdev_mlme_api.h>
|
||||
#include <wlan_serialization_api.h>
|
||||
#include <wlan_utility.h>
|
||||
#include <cdp_txrx_cmn.h>
|
||||
#include "target_if_vdev_mgr_wake_lock.h"
|
||||
#include <target_if_vdev_mgr_wake_lock.h>
|
||||
#include <wlan_lmac_if_def.h>
|
||||
#include <target_if_vdev_mgr_tx_ops.h>
|
||||
|
||||
static QDF_STATUS mlme_vdev_obj_create_handler(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
struct wlan_objmgr_pdev *pdev;
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
struct pdev_mlme_obj *pdev_mlme;
|
||||
struct wlan_lmac_if_mlme_tx_ops *txops;
|
||||
QDF_STATUS status;
|
||||
|
||||
if (!vdev) {
|
||||
mlme_err(" VDEV is NULL");
|
||||
@@ -51,9 +56,33 @@ static QDF_STATUS mlme_vdev_obj_create_handler(struct wlan_objmgr_vdev *vdev,
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1st check whether for this vdev any vdev commands are pending for
|
||||
* response.
|
||||
*/
|
||||
psoc = wlan_pdev_get_psoc(pdev);
|
||||
if (!psoc) {
|
||||
mlme_err("PSOC is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
txops = target_if_vdev_mgr_get_tx_ops(psoc);
|
||||
if (!txops || !txops->psoc_vdev_rsp_timer_inuse) {
|
||||
mlme_err("Failed to get mlme txrx_ops PSOC_%d",
|
||||
wlan_psoc_get_id(psoc));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
status = txops->psoc_vdev_rsp_timer_inuse(psoc, wlan_vdev_get_id(vdev));
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
mlme_err("The vdev response is pending for VDEV_%d status:%d",
|
||||
wlan_vdev_get_id(vdev), status);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
pdev_mlme = wlan_pdev_mlme_get_cmpt_obj(pdev);
|
||||
if (!pdev_mlme) {
|
||||
mlme_err(" PDEV MLME is NULL");
|
||||
mlme_err("PDEV MLME is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
@@ -105,15 +134,6 @@ init_failed:
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
static void mlme_vdev_obj_timer_deinit(
|
||||
struct vdev_mlme_obj *vdev_mlme)
|
||||
{
|
||||
struct vdev_response_timer *vdev_rsp;
|
||||
|
||||
vdev_rsp = &vdev_mlme->vdev_rt;
|
||||
qdf_timer_free(&vdev_rsp->rsp_timer);
|
||||
}
|
||||
|
||||
static QDF_STATUS mlme_vdev_obj_destroy_handler(struct wlan_objmgr_vdev *vdev,
|
||||
void *arg)
|
||||
{
|
||||
@@ -143,8 +163,6 @@ static QDF_STATUS mlme_vdev_obj_destroy_handler(struct wlan_objmgr_vdev *vdev,
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
mlme_vdev_obj_timer_deinit(vdev_mlme);
|
||||
|
||||
mlme_vdev_sm_destroy(vdev_mlme);
|
||||
|
||||
mlme_vdev_ops_ext_hdl_destroy(vdev_mlme);
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle