mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 00:24:41 -04:00
qcacmn: Add support to print vdev req/resp string
Add support to print vdev req/resp string on target_if timer start conflict and timer timeout handler Change-Id: I0116c03089f4ab80623596bb9e8d0268efb0dd87 CRs-Fixed: 2495018
This commit is contained in:
parent
b5029b0a9c
commit
bf48fb69ac
3 changed files with 81 additions and 30 deletions
|
|
@ -45,6 +45,7 @@ void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
|||
struct vdev_delete_response del_rsp = {0};
|
||||
struct peer_delete_all_response peer_del_all_rsp = {0};
|
||||
uint8_t vdev_id;
|
||||
uint16_t rsp_pos = RESPONSE_BIT_MAX;
|
||||
|
||||
vdev_id = wlan_vdev_get_id(vdev);
|
||||
mlme_debug("Response timer expired for VDEV %d", vdev_id);
|
||||
|
|
@ -77,10 +78,13 @@ void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
|||
qdf_is_fw_down()) {
|
||||
/* this ensures stop timer will not be done in target_if */
|
||||
vdev_rsp->timer_status = QDF_STATUS_E_TIMEOUT;
|
||||
if (qdf_atomic_test_bit(START_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status) ||
|
||||
qdf_atomic_test_bit(RESTART_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
}
|
||||
|
||||
if (qdf_atomic_test_bit(START_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status) ||
|
||||
qdf_atomic_test_bit(RESTART_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
if (vdev_rsp->timer_status == QDF_STATUS_E_TIMEOUT) {
|
||||
start_rsp.vdev_id = wlan_vdev_get_id(vdev);
|
||||
start_rsp.status = WLAN_MLME_HOST_VDEV_START_TIMEOUT;
|
||||
if (qdf_atomic_test_bit(START_RESPONSE_BIT,
|
||||
|
|
@ -92,39 +96,57 @@ void target_if_vdev_mgr_rsp_timer_mgmt_cb(void *arg)
|
|||
WMI_HOST_VDEV_RESTART_RESP_EVENT;
|
||||
|
||||
rx_ops->vdev_mgr_start_response(psoc, &start_rsp);
|
||||
} else {
|
||||
if (qdf_atomic_test_bit(START_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status))
|
||||
rsp_pos = START_RESPONSE_BIT;
|
||||
else
|
||||
rsp_pos = RESTART_RESPONSE_BIT;
|
||||
}
|
||||
|
||||
if (qdf_atomic_test_bit(STOP_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
} else if (qdf_atomic_test_bit(STOP_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
if (vdev_rsp->timer_status == QDF_STATUS_E_TIMEOUT) {
|
||||
stop_rsp.vdev_id = wlan_vdev_get_id(vdev);
|
||||
rx_ops->vdev_mgr_stop_response(psoc, &stop_rsp);
|
||||
} else {
|
||||
rsp_pos = STOP_RESPONSE_BIT;
|
||||
}
|
||||
|
||||
if (qdf_atomic_test_bit(DELETE_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
} else if (qdf_atomic_test_bit(DELETE_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
if (vdev_rsp->timer_status == QDF_STATUS_E_TIMEOUT) {
|
||||
del_rsp.vdev_id = wlan_vdev_get_id(vdev);
|
||||
rx_ops->vdev_mgr_delete_response(psoc, &del_rsp);
|
||||
} else {
|
||||
rsp_pos = DELETE_RESPONSE_BIT;
|
||||
}
|
||||
|
||||
if (qdf_atomic_test_bit(PEER_DELETE_ALL_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
} else if (qdf_atomic_test_bit(PEER_DELETE_ALL_RESPONSE_BIT,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
if (vdev_rsp->timer_status == QDF_STATUS_E_TIMEOUT) {
|
||||
peer_del_all_rsp.vdev_id = wlan_vdev_get_id(vdev);
|
||||
rx_ops->vdev_mgr_peer_delete_all_response(
|
||||
psoc,
|
||||
&peer_del_all_rsp);
|
||||
psoc,
|
||||
&peer_del_all_rsp);
|
||||
} else {
|
||||
rsp_pos = PEER_DELETE_ALL_RESPONSE_BIT;
|
||||
}
|
||||
|
||||
} else {
|
||||
mlme_err("PSOC_%d VDEV_%d: Unknown error",
|
||||
wlan_psoc_get_id(psoc), vdev_id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (vdev_rsp->timer_status == QDF_STATUS_E_TIMEOUT)
|
||||
return;
|
||||
|
||||
if (target_if_vdev_mgr_is_panic_on_bug()) {
|
||||
QDF_DEBUG_PANIC("PSOC_%d VDEV_%d: Panic on bug, rsp status:%d",
|
||||
QDF_DEBUG_PANIC("PSOC_%d VDEV_%d: Panic, %s response timeout",
|
||||
wlan_psoc_get_id(psoc),
|
||||
vdev_id, vdev_rsp->rsp_status);
|
||||
vdev_id, string_from_rsp_bit(rsp_pos));
|
||||
} else {
|
||||
mlme_err("PSOC_%d VDEV_%d: Trigger Self recovery, rsp status%d",
|
||||
mlme_err("PSOC_%d VDEV_%d: Self recovery, %s response timeout",
|
||||
wlan_psoc_get_id(psoc),
|
||||
vdev_id, vdev_rsp->rsp_status);
|
||||
vdev_id, string_from_rsp_bit(rsp_pos));
|
||||
wmi_handle = target_if_vdev_mgr_wmi_handle_get(vdev);
|
||||
|
||||
qdf_mem_set(¶m, sizeof(param), 0);
|
||||
|
|
|
|||
|
|
@ -109,10 +109,10 @@ static QDF_STATUS target_if_vdev_mgr_rsp_timer_start(
|
|||
if (rsp_pos != set_bit) {
|
||||
if (qdf_atomic_test_bit(rsp_pos,
|
||||
&vdev_rsp->rsp_status)) {
|
||||
mlme_err("PSOC_%d VDEV_%d: Request bit %d, response bit %d",
|
||||
mlme_err("PSOC_%d VDEV_%d: %s requested, waiting for %s response",
|
||||
wlan_psoc_get_id(psoc),
|
||||
vdev_id, set_bit,
|
||||
vdev_rsp->rsp_status);
|
||||
vdev_id, string_from_rsp_bit(set_bit),
|
||||
string_from_rsp_bit(rsp_pos));
|
||||
target_if_vdev_mgr_assert_mgmt(vdev, vdev_rsp,
|
||||
rsp_pos);
|
||||
target_if_vdev_mgr_rsp_timer_stop(vdev,
|
||||
|
|
@ -123,9 +123,10 @@ static QDF_STATUS target_if_vdev_mgr_rsp_timer_start(
|
|||
}
|
||||
|
||||
if (qdf_atomic_test_and_set_bit(set_bit, &vdev_rsp->rsp_status)) {
|
||||
mlme_err("PSOC_%d VDEV_%d: Request bit: %d, response bit %d",
|
||||
mlme_err("PSOC_%d VDEV_%d: %s requested, waiting for %s response",
|
||||
wlan_psoc_get_id(psoc),
|
||||
vdev_id, set_bit, vdev_rsp->rsp_status);
|
||||
vdev_id, string_from_rsp_bit(set_bit),
|
||||
string_from_rsp_bit(set_bit));
|
||||
target_if_vdev_mgr_assert_mgmt(vdev, vdev_rsp,
|
||||
set_bit);
|
||||
target_if_vdev_mgr_rsp_timer_stop(vdev, vdev_rsp, set_bit);
|
||||
|
|
|
|||
|
|
@ -28,12 +28,40 @@
|
|||
|
||||
#include <qdf_timer.h>
|
||||
|
||||
#define START_RESPONSE_BIT 0x1
|
||||
#define RESTART_RESPONSE_BIT 0x2
|
||||
#define STOP_RESPONSE_BIT 0x3
|
||||
#define DELETE_RESPONSE_BIT 0x4
|
||||
#define PEER_DELETE_ALL_RESPONSE_BIT 0x5
|
||||
#define RESPONSE_BIT_MAX PEER_DELETE_ALL_RESPONSE_BIT
|
||||
/**
|
||||
* enum wlan_vdev_mgr_tgt_if_rsp_bit - response status bit
|
||||
* START_RESPONSE_BIT: vdev start response bit
|
||||
* RESTART_RESPONSE_BIT: vdev restart response bit
|
||||
* STOP_RESPONSE_BIT: vdev stop response bit
|
||||
* DELETE_RESPONSE_BIT: vdev delete response bit
|
||||
* PEER_DELETE_ALL_RESPONSE_BIT: vdev peer delete all response bit
|
||||
*/
|
||||
enum wlan_vdev_mgr_tgt_if_rsp_bit {
|
||||
START_RESPONSE_BIT = 0,
|
||||
RESTART_RESPONSE_BIT = 1,
|
||||
STOP_RESPONSE_BIT = 2,
|
||||
DELETE_RESPONSE_BIT = 3,
|
||||
PEER_DELETE_ALL_RESPONSE_BIT = 4,
|
||||
RESPONSE_BIT_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
* string_from_rsp_bit() - Convert response bit to string
|
||||
* @bit - response bit as in wlan_vdev_mgr_tgt_if_rsp_bit
|
||||
*
|
||||
* Please note to add new string in the array at index equal to
|
||||
* its enum value in wlan_vdev_mgr_tgt_if_rsp_bit.
|
||||
*/
|
||||
static inline char *string_from_rsp_bit(enum wlan_vdev_mgr_tgt_if_rsp_bit bit)
|
||||
{
|
||||
static const char *strings[] = { "START",
|
||||
"RESTART",
|
||||
"STOP",
|
||||
"DELETE",
|
||||
"PEER DELETE ALL",
|
||||
"RESPONE MAX"};
|
||||
return (char *)strings[bit];
|
||||
}
|
||||
|
||||
#define START_RESPONSE_TIMER 6000 /* 6 seconds */
|
||||
#define STOP_RESPONSE_TIMER 3000 /* 3 seconds */
|
||||
|
|
|
|||
Loading…
Reference in a new issue