qcacld-3.0: Fix is_waiting_for_key usage for waking up host
Fix usage of flag is_waiting_for_key such that it programs wake timer only for secure STA connected state. Change-Id: I336696f15c5fc932a4eedf5534c2182bda3d2e27 CRs-Fixed: 2214809
Dieser Commit ist enthalten in:

committet von
nshrivas

Ursprung
048239934a
Commit
a600b2e226
@@ -2028,6 +2028,10 @@ int wma_vdev_stop_resp_handler(void *handle, uint8_t *cmd_param_info,
|
||||
}
|
||||
|
||||
iface = &wma->interfaces[resp_event->vdev_id];
|
||||
|
||||
/* vdev in stopped state, no more waiting for key */
|
||||
iface->is_waiting_for_key = false;
|
||||
|
||||
wma_release_wakelock(&iface->vdev_stop_wakelock);
|
||||
|
||||
req_msg = wma_find_vdev_req(wma, resp_event->vdev_id,
|
||||
@@ -4181,7 +4185,10 @@ static void wma_add_bss_sta_mode(tp_wma_handle wma, tpAddBssParams add_bss)
|
||||
wma_send_peer_assoc(wma, add_bss->nwType,
|
||||
&add_bss->staContext);
|
||||
/* we just had peer assoc, so install key will be done later */
|
||||
iface->is_waiting_for_key = true;
|
||||
|
||||
if (add_bss->staContext.encryptType != eSIR_ED_NONE)
|
||||
iface->is_waiting_for_key = true;
|
||||
|
||||
peer_assoc_sent = true;
|
||||
|
||||
if (add_bss->rmfEnabled)
|
||||
|
@@ -2575,6 +2575,11 @@ static int wma_wake_event_piggybacked(
|
||||
uint32_t pb_event_len;
|
||||
uint32_t wake_reason;
|
||||
uint32_t event_id;
|
||||
uint8_t *bssid;
|
||||
uint8_t peer_id;
|
||||
void *peer, *pdev;
|
||||
tpDeleteStaContext del_sta_ctx;
|
||||
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
|
||||
|
||||
/*
|
||||
* There are "normal" cases where a wake reason that usually contains a
|
||||
@@ -2588,6 +2593,9 @@ static int wma_wake_event_piggybacked(
|
||||
return 0;
|
||||
}
|
||||
|
||||
pdev = cds_get_context(QDF_MODULE_ID_TXRX);
|
||||
bssid = wma->interfaces[event_param->fixed_param->vdev_id].bssid;
|
||||
peer = cdp_peer_find_by_addr(soc, pdev, bssid, &peer_id);
|
||||
wake_reason = event_param->fixed_param->wake_reason;
|
||||
|
||||
/* parse piggybacked event from param buffer */
|
||||
@@ -2710,8 +2718,20 @@ static int wma_wake_event_piggybacked(
|
||||
* programmed. So do not check for cookie.
|
||||
*/
|
||||
WMA_LOGE("WOW_REASON_TIMER_INTR_RECV received, indicating key exchange did not finish. Initiate disconnect");
|
||||
errno = wma_peer_sta_kickout_event_handler(wma, pb_event,
|
||||
pb_event_len);
|
||||
del_sta_ctx = (tpDeleteStaContext) qdf_mem_malloc(
|
||||
sizeof(*del_sta_ctx));
|
||||
if (!del_sta_ctx) {
|
||||
WMA_LOGE("%s: mem alloc failed ", __func__);
|
||||
break;
|
||||
}
|
||||
del_sta_ctx->is_tdls = false;
|
||||
del_sta_ctx->vdev_id = event_param->fixed_param->vdev_id;
|
||||
del_sta_ctx->staId = peer_id;
|
||||
qdf_mem_copy(del_sta_ctx->addr2, bssid, IEEE80211_ADDR_LEN);
|
||||
qdf_mem_copy(del_sta_ctx->bssId, bssid, IEEE80211_ADDR_LEN);
|
||||
del_sta_ctx->reasonCode = HAL_DEL_STA_REASON_CODE_KEEP_ALIVE;
|
||||
wma_send_msg(wma, SIR_LIM_DELETE_STA_CONTEXT_IND, del_sta_ctx,
|
||||
0);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren