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:
Arun Kumar Khandavalli
2019-09-03 14:31:17 +05:30
ebeveyn b49c9b7a2b
işleme 614d1e4476
16 değiştirilmiş dosya ile 651 ekleme ve 359 silme

Dosyayı Görüntüle

@@ -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

Dosyayı Görüntüle

@@ -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;
}

Dosyayı Görüntüle

@@ -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);