qcacld-3.0: Don't fill any WMA request if target is not ready

If any WMA request is queued in wma hold req/vdev resp queue after fw
has crashed and sent the corresponding uevent to HOST, request will
timeout and if at the same time, SSR is also going on, it may lead to
various issues and crashes.

Check whether target is ready or not before queuing any request
in wma hold req/vdev resp queue.

Change-Id: I26b5746e9ba4f57f46b3a5a486bd85ef150d0ee7
CRs-Fixed: 2289004
Este commit está contenido en:
Yeshwanth Sriram Guntuka
2018-08-01 15:31:10 +05:30
cometido por nshrivas
padre eac7fe9f27
commit 25fa2c0792
Se han modificado 3 ficheros con 12 adiciones y 0 borrados

Ver fichero

@@ -1505,6 +1505,7 @@ static void wlan_hdd_handle_the_pld_uevent(struct pld_uevent_data *uevent)
switch (uevent->uevent) {
case PLD_RECOVERY:
cds_set_target_ready(false);
hdd_pld_ipa_uc_shutdown_pipes();
break;
case PLD_FW_DOWN:

Ver fichero

@@ -1250,6 +1250,7 @@ void wma_set_linkstate(tp_wma_handle wma, tpLinkStateParams params)
vdev_id);
params->status = false;
status = QDF_STATUS_E_NOMEM;
goto out;
}
wma_vdev_set_pause_bit(vdev_id, PAUSE_TYPE_HOST);
if (wma_send_vdev_stop_to_fw(wma, vdev_id)) {

Ver fichero

@@ -3406,6 +3406,11 @@ struct wma_target_req *wma_fill_hold_req(tp_wma_handle wma,
struct wma_target_req *req;
QDF_STATUS status;
if (!cds_is_target_ready()) {
WMA_LOGE("target not ready, drop the request");
return NULL;
}
req = qdf_mem_malloc(sizeof(*req));
if (!req) {
WMA_LOGE(FL("Failed to allocate memory for msg %d vdev %d"),
@@ -3732,6 +3737,11 @@ struct wma_target_req *wma_fill_vdev_req(tp_wma_handle wma,
struct wma_target_req *req;
QDF_STATUS status;
if (!cds_is_target_ready()) {
WMA_LOGE("target not ready, drop the request");
return NULL;
}
req = qdf_mem_malloc(sizeof(*req));
if (!req) {
WMA_LOGE("%s: Failed to allocate memory for msg %d vdev %d",