mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 09:14:18 -04:00
qcacld-3.0: Add 1 second timed wake lock for 4 way handshake
Add 1 second wake lock for 4 way handshake to avoid APPS power collapse in middle of eapol exchange which can delay the association process. Change-Id: Ife73dc00aa05b5a80d0a90afd18468bd033ebdd9 CRs-Fixed: 2118533
This commit is contained in:
parent
b0e9c09db2
commit
155a3e4a88
3 changed files with 29 additions and 1 deletions
|
|
@ -292,6 +292,7 @@ enum ds_mode {
|
|||
#define WMA_VDEV_STOP_REQUEST_TIMEOUT (6000) /* 6 seconds */
|
||||
#define WMA_VDEV_HW_MODE_REQUEST_TIMEOUT (5000) /* 5 seconds */
|
||||
#define WMA_VDEV_PLCY_MGR_CMD_TIMEOUT (3000) /* 3 seconds */
|
||||
#define WMA_VDEV_SET_KEY_REQUEST_TIMEOUT (1000) /* 1 second */
|
||||
|
||||
#define WMA_TGT_INVALID_SNR (0)
|
||||
|
||||
|
|
@ -1043,6 +1044,7 @@ typedef struct {
|
|||
* @in_bmps : Whether bmps for this interface has been enabled
|
||||
* @vdev_start_wakelock: wakelock to protect vdev start op with firmware
|
||||
* @vdev_stop_wakelock: wakelock to protect vdev stop op with firmware
|
||||
* @vdev_set_key_wakelock: wakelock to protect vdev set key op with firmware
|
||||
*/
|
||||
struct wma_txrx_node {
|
||||
uint8_t addr[IEEE80211_ADDR_LEN];
|
||||
|
|
@ -1127,6 +1129,7 @@ struct wma_txrx_node {
|
|||
bool beacon_filter_enabled;
|
||||
qdf_wake_lock_t vdev_start_wakelock;
|
||||
qdf_wake_lock_t vdev_stop_wakelock;
|
||||
qdf_wake_lock_t vdev_set_key_wakelock;
|
||||
};
|
||||
|
||||
#if defined(QCA_WIFI_FTM)
|
||||
|
|
|
|||
|
|
@ -2356,12 +2356,14 @@ void wma_vdev_init(struct wma_txrx_node *vdev)
|
|||
{
|
||||
qdf_wake_lock_create(&vdev->vdev_start_wakelock, "vdev_start");
|
||||
qdf_wake_lock_create(&vdev->vdev_stop_wakelock, "vdev_stop");
|
||||
qdf_wake_lock_create(&vdev->vdev_set_key_wakelock, "vdev_set_key");
|
||||
}
|
||||
|
||||
void wma_vdev_deinit(struct wma_txrx_node *vdev)
|
||||
{
|
||||
qdf_wake_lock_destroy(&vdev->vdev_start_wakelock);
|
||||
qdf_wake_lock_destroy(&vdev->vdev_stop_wakelock);
|
||||
qdf_wake_lock_destroy(&vdev->vdev_set_key_wakelock);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1240,8 +1240,13 @@ QDF_STATUS wma_send_peer_assoc(tp_wma_handle wma,
|
|||
#ifdef FEATURE_WLAN_WAPI
|
||||
|| params->encryptType == eSIR_ED_WPI
|
||||
#endif /* FEATURE_WLAN_WAPI */
|
||||
)
|
||||
) {
|
||||
cmd->peer_flags |= WMI_PEER_NEED_PTK_4_WAY;
|
||||
WMA_LOGD("Acquire set key wake lock for %d ms",
|
||||
WMA_VDEV_SET_KEY_REQUEST_TIMEOUT);
|
||||
wma_acquire_wakelock(&intr->vdev_set_key_wakelock,
|
||||
WMA_VDEV_SET_KEY_REQUEST_TIMEOUT);
|
||||
}
|
||||
if (params->wpa_rsn >> 1)
|
||||
cmd->peer_flags |= WMI_PEER_NEED_GTK_2_WAY;
|
||||
|
||||
|
|
@ -1630,6 +1635,17 @@ static QDF_STATUS wma_setup_install_key_cmd(tp_wma_handle wma_handle,
|
|||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
|
||||
if (NULL == wma_handle) {
|
||||
WMA_LOGE(FL("Invalid wma_handle for vdev_id: %d"),
|
||||
key_params->vdev_id);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
if (key_params->vdev_id >= wma_handle->max_bssid) {
|
||||
WMA_LOGE(FL("Invalid vdev_id: %d"), key_params->vdev_id);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
iface = &wma_handle->interfaces[key_params->vdev_id];
|
||||
|
||||
params.vdev_id = key_params->vdev_id;
|
||||
params.key_idx = key_params->key_idx;
|
||||
qdf_mem_copy(params.peer_mac, key_params->peer_mac, IEEE80211_ADDR_LEN);
|
||||
|
|
@ -1779,6 +1795,13 @@ static QDF_STATUS wma_setup_install_key_cmd(tp_wma_handle wma_handle,
|
|||
status = wmi_unified_setup_install_key_cmd(wma_handle->wmi_handle,
|
||||
¶ms);
|
||||
|
||||
|
||||
if (!key_params->unicast) {
|
||||
/* Its GTK release the wake lock */
|
||||
WMA_LOGD("Release set key wake lock");
|
||||
wma_release_wakelock(&iface->vdev_set_key_wakelock);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue