qcacld-3.0: update hang data for pe session
Update the hang data for the pessssion. For the pe module update the various states which will give insight into the reason for recovery. Change-Id: I7e3f18bd8b18dd0d56c09d4a4ce38ce7c3677ecc CRs-Fixed: 2651762
This commit is contained in:

committed by
nshrivas

szülő
338bf2a04d
commit
4f8adceefe
@@ -75,6 +75,17 @@
|
|||||||
#include "cfg_ucfg_api.h"
|
#include "cfg_ucfg_api.h"
|
||||||
#include "wlan_mlme_public_struct.h"
|
#include "wlan_mlme_public_struct.h"
|
||||||
#include "wlan_scan_utils_api.h"
|
#include "wlan_scan_utils_api.h"
|
||||||
|
#include <qdf_hang_event_notifier.h>
|
||||||
|
#include <qdf_notifier.h>
|
||||||
|
|
||||||
|
struct pe_hang_event_fixed_param {
|
||||||
|
uint32_t tlv_header;
|
||||||
|
uint8_t vdev_id;
|
||||||
|
uint8_t limmlmstate;
|
||||||
|
uint8_t limprevmlmstate;
|
||||||
|
uint8_t limsmestate;
|
||||||
|
uint8_t limprevsmestate;
|
||||||
|
} qdf_packed;
|
||||||
|
|
||||||
static void __lim_init_bss_vars(struct mac_context *mac)
|
static void __lim_init_bss_vars(struct mac_context *mac)
|
||||||
{
|
{
|
||||||
@@ -726,6 +737,51 @@ static QDF_STATUS lim_unregister_sap_bcn_callback(struct mac_context *mac_ctx)
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int pe_hang_event_notifier_call(struct notifier_block *block,
|
||||||
|
unsigned long state,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
qdf_notif_block *notif_block = qdf_container_of(block, qdf_notif_block,
|
||||||
|
notif_block);
|
||||||
|
struct mac_context *mac;
|
||||||
|
struct pe_session *session;
|
||||||
|
struct qdf_notifer_data *pe_hang_data = data;
|
||||||
|
uint8_t *pe_data;
|
||||||
|
uint8_t i;
|
||||||
|
struct pe_hang_event_fixed_param *cmd;
|
||||||
|
|
||||||
|
if (!data)
|
||||||
|
return NOTIFY_STOP_MASK;
|
||||||
|
|
||||||
|
mac = notif_block->priv_data;
|
||||||
|
if (!mac)
|
||||||
|
return NOTIFY_STOP_MASK;
|
||||||
|
|
||||||
|
if (pe_hang_data->offset >= QDF_WLAN_MAX_HOST_OFFSET)
|
||||||
|
return NOTIFY_STOP_MASK;
|
||||||
|
|
||||||
|
for (i = 0; i < mac->lim.maxBssId; i++) {
|
||||||
|
session = &mac->lim.gpSession[i];
|
||||||
|
if (!session->valid)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pe_data = (pe_hang_data->hang_data + pe_hang_data->offset);
|
||||||
|
cmd = (struct pe_hang_event_fixed_param *)pe_data;
|
||||||
|
cmd->vdev_id = session->vdev_id;
|
||||||
|
cmd->limmlmstate = session->limMlmState;
|
||||||
|
cmd->limprevmlmstate = session->limPrevMlmState;
|
||||||
|
cmd->limsmestate = session->limSmeState;
|
||||||
|
cmd->limprevsmestate = session->limPrevSmeState;
|
||||||
|
pe_hang_data->offset += sizeof(*cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NOTIFY_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static qdf_notif_block pe_hang_event_notifier = {
|
||||||
|
.notif_block.notifier_call = pe_hang_event_notifier_call,
|
||||||
|
};
|
||||||
|
|
||||||
/** -------------------------------------------------------------
|
/** -------------------------------------------------------------
|
||||||
\fn pe_open
|
\fn pe_open
|
||||||
\brief will be called in Open sequence from mac_open
|
\brief will be called in Open sequence from mac_open
|
||||||
@@ -794,6 +850,9 @@ QDF_STATUS pe_open(struct mac_context *mac, struct cds_config_info *cds_cfg)
|
|||||||
pe_err("%s: Shutdown notifier register failed", __func__);
|
pe_err("%s: Shutdown notifier register failed", __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pe_hang_event_notifier.priv_data = mac;
|
||||||
|
qdf_hang_event_register_notifier(&pe_hang_event_notifier);
|
||||||
|
|
||||||
return status; /* status here will be QDF_STATUS_SUCCESS */
|
return status; /* status here will be QDF_STATUS_SUCCESS */
|
||||||
|
|
||||||
pe_open_lock_fail:
|
pe_open_lock_fail:
|
||||||
@@ -822,6 +881,7 @@ QDF_STATUS pe_close(struct mac_context *mac)
|
|||||||
if (ANI_DRIVER_TYPE(mac) == QDF_DRIVER_TYPE_MFG)
|
if (ANI_DRIVER_TYPE(mac) == QDF_DRIVER_TYPE_MFG)
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
|
qdf_hang_event_unregister_notifier(&pe_hang_event_notifier);
|
||||||
lim_cleanup(mac);
|
lim_cleanup(mac);
|
||||||
lim_unregister_sap_bcn_callback(mac);
|
lim_unregister_sap_bcn_callback(mac);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user