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
Este commit está contenido en:
Arun Kumar Khandavalli
2019-09-03 14:31:17 +05:30
padre b49c9b7a2b
commit 614d1e4476
Se han modificado 16 ficheros con 651 adiciones y 359 borrados

Ver fichero

@@ -81,16 +81,22 @@ static inline char *string_from_rsp_bit(enum wlan_vdev_mgr_tgt_if_rsp_bit bit)
/**
* struct vdev_response_timer - vdev mgmt response ops timer
* @psoc: Object manager psoc
* @rsp_timer: VDEV MLME mgmt response timer
* @rsp_status: variable to check response status
* @expire_time: time to expire timer
* @timer_status: status of timer
* @rsp_timer_inuse: Status bit to inform whether the rsp timer is inuse
* @vdev_id: vdev object id
*/
struct vdev_response_timer {
struct wlan_objmgr_psoc *psoc;
qdf_timer_t rsp_timer;
unsigned long rsp_status;
uint32_t expire_time;
QDF_STATUS timer_status;
qdf_atomic_t rsp_timer_inuse;
uint8_t vdev_id;
};
/**

Ver fichero

@@ -28,19 +28,23 @@
#include <wlan_mlme_dbg.h>
#include <wlan_vdev_mlme_api.h>
#include <target_if_vdev_mgr_tx_ops.h>
#include <wlan_psoc_mlme_main.h>
#include <include/wlan_psoc_mlme.h>
static struct vdev_response_timer *
tgt_vdev_mgr_get_response_timer_info(struct wlan_objmgr_vdev *vdev)
tgt_vdev_mgr_get_response_timer_info(struct wlan_objmgr_psoc *psoc,
uint8_t vdev_id)
{
struct vdev_mlme_obj *vdev_mlme;
struct psoc_mlme_obj *psoc_mlme;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlme_err("VDEV_%d: VDEV_MLME is NULL", wlan_vdev_get_id(vdev));
psoc_mlme = mlme_psoc_get_priv(psoc);
if (!psoc_mlme) {
mlme_err("VDEV_%d PSOC_%d PSOC_MLME is NULL", vdev_id,
wlan_psoc_get_id(psoc));
return NULL;
}
return &vdev_mlme->vdev_rt;
return &psoc_mlme->psoc_vdev_rt[vdev_id];
}
static QDF_STATUS tgt_vdev_mgr_start_response_handler(
@@ -65,7 +69,8 @@ static QDF_STATUS tgt_vdev_mgr_start_response_handler(
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlme_err("VDEV_%d: VDEV_MLME is NULL", rsp->vdev_id);
mlme_err("VDEV_%d PSOC_%d VDEV_MLME is NULL", rsp->vdev_id,
wlan_psoc_get_id(psoc));
goto tgt_vdev_mgr_start_response_handler_end;
}
@@ -101,7 +106,8 @@ static QDF_STATUS tgt_vdev_mgr_stop_response_handler(
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlme_err("VDEV_%d: VDEV_MLME is NULL", rsp->vdev_id);
mlme_err("VDEV_%d: PSOC_%d VDEV_MLME is NULL", rsp->vdev_id,
wlan_psoc_get_id(psoc));
goto tgt_vdev_mgr_stop_response_handler_end;
}
@@ -138,7 +144,8 @@ static QDF_STATUS tgt_vdev_mgr_delete_response_handler(
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlme_err("VDEV_%d: VDEV_MLME is NULL", rsp->vdev_id);
mlme_err("VDEV_%d: PSOC_%d VDEV_MLME is NULL", rsp->vdev_id,
wlan_psoc_get_id(psoc));
goto tgt_vdev_mgr_delete_response_handler_end;
}
@@ -176,7 +183,8 @@ static QDF_STATUS tgt_vdev_mgr_peer_delete_all_response_handler(
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) {
mlme_err("VDEV_%d: VDEV_MLME is NULL", rsp->vdev_id);
mlme_err("VDEV_%d: PSOC_%d VDEV_MLME is NULL", rsp->vdev_id,
wlan_psoc_get_id(psoc));
goto tgt_vdev_mgr_peer_delete_all_response_handler_end;
}
@@ -262,8 +270,7 @@ void tgt_vdev_mgr_register_rx_ops(struct wlan_lmac_if_rx_ops *rx_ops)
tgt_vdev_mgr_delete_response_handler;
mlme_rx_ops->vdev_mgr_peer_delete_all_response =
tgt_vdev_mgr_peer_delete_all_response_handler;
mlme_rx_ops->vdev_mgr_get_response_timer_info =
mlme_rx_ops->psoc_get_vdev_response_timer_info =
tgt_vdev_mgr_get_response_timer_info;
tgt_vdev_mgr_reg_wakelock_info_rx_op(&rx_ops->mops);
}

Ver fichero

@@ -63,7 +63,6 @@ QDF_STATUS tgt_vdev_mgr_create_send(
enum wlan_op_subtype cdp_txrx_subtype;
uint32_t vdev_id;
uint8_t *vdev_addr;
struct vdev_response_timer *vdev_rsp;
if (!param) {
mlme_err("Invalid input");
@@ -73,25 +72,27 @@ QDF_STATUS tgt_vdev_mgr_create_send(
vdev = mlme_obj->vdev;
vdev_id = wlan_vdev_get_id(vdev);
txops = wlan_vdev_mlme_get_lmac_txops(vdev);
if (!txops || !txops->vdev_create_send ||
!txops->vdev_mgr_rsp_timer_init) {
mlme_err("VDEV_%d: No Tx Ops", vdev_id);
if (!txops || !txops->vdev_create_send) {
mlme_err("VDEV_%d No Tx Ops", vdev_id);
return QDF_STATUS_E_INVAL;
}
psoc = wlan_vdev_get_psoc(vdev);
if (!psoc) {
mlme_err("psoc object is NULL");
return QDF_STATUS_E_INVAL;
}
status = txops->vdev_create_send(vdev, param);
if (QDF_IS_STATUS_SUCCESS(status)) {
vdev_rsp = &mlme_obj->vdev_rt;
txops->vdev_mgr_rsp_timer_init(vdev, &vdev_rsp->rsp_timer);
} else {
mlme_err("VDEV_%d: Tx Ops Error : %d", vdev_id, status);
if (QDF_IS_STATUS_ERROR(status)) {
mlme_err("VDEV_%d PSOC_%d Tx Ops Error : %d", vdev_id,
wlan_psoc_get_id(psoc), status);
return status;
}
cdp_txrx_opmode = wlan_util_vdev_get_cdp_txrx_opmode(vdev);
cdp_txrx_subtype = wlan_util_vdev_get_cdp_txrx_subtype(vdev);
vdev_addr = wlan_vdev_mlme_get_macaddr(vdev);
psoc = wlan_vdev_get_psoc(vdev);
pdev = wlan_vdev_get_pdev(vdev);
soc_txrx_handle = wlan_psoc_get_dp_handle(psoc);
pdev_txrx_handle = wlan_pdev_get_dp_handle(pdev);
@@ -107,7 +108,6 @@ QDF_STATUS tgt_vdev_mgr_create_send(
return QDF_STATUS_E_FAILURE;
wlan_vdev_set_dp_handle(vdev, vdev_txrx_handle);
return status;
}