Merge "qcacld-3.0: WPA3 roam make preauth start command as wakable" into wlan-cld3.driver.lnx.2.0

This commit is contained in:
CNSS_WLAN Service 2019-10-18 09:09:11 -07:00 • committed by Gerrit - the friendly Code Review server
commit add7b92269
5 changed files with 28 additions and 0 deletions

View file

@ -425,6 +425,13 @@ void pmo_set_sta_wow_bitmask(uint32_t *bitmask, uint32_t wow_bitmap_size)
pmo_set_wow_event_bitmap(WOW_NLO_SCAN_COMPLETE_EVENT,
wow_bitmap_size,
bitmask);
/*
* WPA3 roaming offloads SAE authentication to wpa_supplicant
* Firmware will send WMI_ROAM_PREAUTH_STATUS_CMDID
*/
pmo_set_wow_event_bitmap(WOW_ROAM_PREAUTH_START_EVENT,
wow_bitmap_size,
bitmask);
}
void pmo_set_sap_wow_bitmask(uint32_t *bitmask, uint32_t wow_bitmap_size)

View file

@ -225,6 +225,8 @@
#define WMA_DEAUTH_RECV_WAKE_LOCK_DURATION WAKELOCK_DURATION_RECOMMENDED
#define WMA_DISASSOC_RECV_WAKE_LOCK_DURATION WAKELOCK_DURATION_RECOMMENDED
#define WMA_ROAM_HO_WAKE_LOCK_DURATION (500) /* in msec */
#define WMA_ROAM_PREAUTH_WAKE_LOCK_DURATION (2 * 1000)
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
#define WMA_AUTO_SHUTDOWN_WAKE_LOCK_DURATION WAKELOCK_DURATION_RECOMMENDED
#endif
@ -1060,6 +1062,7 @@ typedef struct {
qdf_wake_lock_t wow_ap_assoc_lost_wl;
qdf_wake_lock_t wow_auto_shutdown_wl;
qdf_wake_lock_t roam_ho_wl;
qdf_wake_lock_t roam_preauth_wl;
int wow_nack;
qdf_atomic_t is_wow_bus_suspended;
bool suitable_ap_hb_failure;

View file

@ -1395,6 +1395,8 @@ static const uint8_t *wma_wow_wake_reason_str(A_INT32 wake_reason)
return "IOAC_TIMER_EVENT";
case WOW_REASON_ROAM_HO:
return "ROAM_HO";
case WOW_REASON_ROAM_PREAUTH_START:
return "ROAM_PREAUTH_START_EVENT";
case WOW_REASON_DFS_PHYERR_RADADR_EVENT:
return "DFS_PHYERR_RADADR_EVENT";
case WOW_REASON_BEACON_RECV:
@ -1668,6 +1670,9 @@ static int wow_get_wmi_eventid(int32_t reason, uint32_t tag)
case WOW_REASON_11D_SCAN:
event_id = WMI_11D_NEW_COUNTRY_EVENTID;
break;
case WOW_ROAM_PREAUTH_START_EVENT:
event_id = WMI_ROAM_PREAUTH_STATUS_CMDID;
break;
default:
WMA_LOGD(FL("No Event Id for WOW reason %s(%d)"),
wma_wow_wake_reason_str(reason), reason);
@ -2244,6 +2249,9 @@ static void wma_acquire_wow_wakelock(t_wma_handle *wma, int wake_reason)
wl = &wma->roam_ho_wl;
ms = WMA_ROAM_HO_WAKE_LOCK_DURATION;
break;
case WOW_REASON_ROAM_PREAUTH_START:
wl = &wma->roam_preauth_wl;
ms = WMA_ROAM_PREAUTH_WAKE_LOCK_DURATION;
default:
return;
}

View file

@ -3176,6 +3176,8 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc,
"wlan_auto_shutdown_wl");
qdf_wake_lock_create(&wma_handle->roam_ho_wl,
"wlan_roam_ho_wl");
qdf_wake_lock_create(&wma_handle->roam_preauth_wl,
"wlan_roam_preauth_wl");
}
qdf_status = wlan_objmgr_psoc_try_get_ref(psoc, WLAN_LEGACY_WMA_ID);
@ -3679,6 +3681,7 @@ err_get_psoc_ref:
qdf_wake_lock_destroy(&wma_handle->wow_ap_assoc_lost_wl);
qdf_wake_lock_destroy(&wma_handle->wow_auto_shutdown_wl);
qdf_wake_lock_destroy(&wma_handle->roam_ho_wl);
qdf_wake_lock_destroy(&wma_handle->roam_preauth_wl);
}
err_free_wma_handle:
cds_free_context(QDF_MODULE_ID_WMA, wma_handle);
@ -4703,6 +4706,7 @@ QDF_STATUS wma_close(void)
qdf_wake_lock_destroy(&wma_handle->wow_ap_assoc_lost_wl);
qdf_wake_lock_destroy(&wma_handle->wow_auto_shutdown_wl);
qdf_wake_lock_destroy(&wma_handle->roam_ho_wl);
qdf_wake_lock_destroy(&wma_handle->roam_preauth_wl);
}
/* unregister Firmware debug log */

View file

@ -3242,6 +3242,12 @@ int wma_roam_auth_offload_event_handler(WMA_HANDLE handle, uint8_t *event,
return -EINVAL;
}
cds_host_diag_log_work(&wma->roam_preauth_wl,
WMA_ROAM_PREAUTH_WAKE_LOCK_DURATION,
WIFI_POWER_EVENT_WAKELOCK_WOW);
qdf_wake_lock_timeout_acquire(&wma->roam_ho_wl,
WMA_ROAM_HO_WAKE_LOCK_DURATION);
WMI_MAC_ADDR_TO_CHAR_ARRAY(&rso_auth_start_ev->candidate_ap_bssid,
ap_bssid.bytes);
if (qdf_is_macaddr_zero(&ap_bssid) ||