diff options
| author | gaurank kathpalia <gkathpal@codeaurora.org> | 2018-07-10 15:57:59 +0530 |
|---|---|---|
| committer | nshrivas <nshrivas@codeaurora.org> | 2018-07-16 12:55:07 -0700 |
| commit | bc40de5f2a42c3607da86536577696331f2e28bc (patch) | |
| tree | abd7d880cff427f513383696ae8ac3e49e9245ab | |
| parent | 04822245293000c7bae32a0867ede4dfee09a061 (diff) | |
qcacld-3.0: Fix GTK offload req params
Currently the host sends the fixed gtk offload params
and the FILS TLV params, even when the FILS feature is disabled
in the host, which force firmware to pick the KEK from the
FILS TLV structure rather than from the fixed param structure,
which further leads to GTK re-keying feature fail.
Fix is to send only the fixed params in case when host doesnt
supports FILS.
Change-Id: I5b3b3fd503c7cb9c4d7933074fd483086b113204
CRs-Fixed: 2244725
| -rw-r--r-- | core/hdd/inc/wlan_hdd_assoc.h | 9 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_assoc.c | 10 | ||||
| -rw-r--r-- | core/hdd/src/wlan_hdd_cfg80211.c | 2 | ||||
| -rw-r--r-- | core/mac/inc/sir_api.h | 1 | ||||
| -rw-r--r-- | core/wma/src/wma_features.c | 1 |
5 files changed, 15 insertions, 8 deletions
diff --git a/core/hdd/inc/wlan_hdd_assoc.h b/core/hdd/inc/wlan_hdd_assoc.h index 3b94c486daa3..4de9e2fda672 100644 --- a/core/hdd/inc/wlan_hdd_assoc.h +++ b/core/hdd/inc/wlan_hdd_assoc.h @@ -225,6 +225,15 @@ typedef struct hdd_ap_ctx_s hdd_ap_ctx_t; */ bool hdd_is_connecting(hdd_station_ctx_t *hdd_sta_ctx); +/* + * hdd_is_fils_connection: API to determine if connection is FILS + * @adapter: hdd adapter + * + * Return: true if fils connection else false + */ +bool hdd_is_fils_connection(hdd_adapter_t *adapter); + + /** * hdd_conn_is_connected() - Function to check connection status * @pHddStaCtx: pointer to global HDD Station context diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index 98b3da92e7da..070228d56c9d 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -5634,13 +5634,7 @@ hdd_translate_wpa_to_csr_encryption_type(uint8_t cipher_suite[4]) } #ifdef WLAN_FEATURE_FILS_SK -/* - * hdd_is_fils_connection: API to determine if connection is FILS - * @adapter: hdd adapter - * - * Return: true if fils connection else false - */ -static inline bool hdd_is_fils_connection(hdd_adapter_t *adapter) +bool hdd_is_fils_connection(hdd_adapter_t *adapter) { hdd_wext_state_t *wext_state = WLAN_HDD_GET_WEXT_STATE_PTR(adapter); @@ -5651,7 +5645,7 @@ static inline bool hdd_is_fils_connection(hdd_adapter_t *adapter) return false; } #else -static inline bool hdd_is_fils_connection(hdd_adapter_t *adapter) +bool hdd_is_fils_connection(hdd_adapter_t *adapter) { return false; } diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index aa013e0d42fa..f34aefee677a 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -5222,6 +5222,8 @@ void wlan_hdd_save_gtk_offload_params(hdd_adapter_t *adapter, uint8_t *kck_ptr, qdf_copy_macaddr(&hdd_sta_ctx->gtkOffloadReqParams.bssid, &hdd_sta_ctx->conn_info.bssId); hdd_sta_ctx->gtkOffloadReqParams.kek_len = kek_len; + hdd_sta_ctx->gtkOffloadReqParams.is_fils_connection = + hdd_is_fils_connection(adapter); /* * changing from big to little endian since driver * works on little endian format diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index b75ef9563a52..9f282ccae43e 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -3860,6 +3860,7 @@ typedef struct { uint32_t kek_len; uint64_t ullKeyReplayCounter; /* replay counter */ struct qdf_mac_addr bssid; + bool is_fils_connection; } tSirGtkOffloadParams, *tpSirGtkOffloadParams; /*--------------------------------------------------------------------------- diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index e1b1daf7b0ea..dddedba129f7 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -7268,6 +7268,7 @@ static QDF_STATUS wma_send_gtk_offload_req(tp_wma_handle wma, uint8_t vdev_id, enable_offload = params->ulFlags; offload_params.kek_len = params->kek_len; + offload_params.is_fils_connection = params->is_fils_connection; /* send the wmi command */ status = wmi_unified_send_gtk_offload_cmd(wma->wmi_handle, |
