From 4493d2d605c2891ebf3f1b06fba3216aa93994a6 Mon Sep 17 00:00:00 2001 From: Subrat Mishra Date: Mon, 21 May 2018 12:20:52 +0530 Subject: [PATCH] qcacmn: Allow FILS decap for (Re)Assoc frame Allow FILS decap for (Re)Association request/response frame by returning keyid as 0. Change-Id: Icdf6d325eeccda36eeaf5a5635fcf9cf361d1028 CRs-Fixed: 2217523 --- umac/cmn_services/crypto/src/wlan_crypto_fils.c | 1 + .../cmn_services/crypto/src/wlan_crypto_global_api.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/umac/cmn_services/crypto/src/wlan_crypto_fils.c b/umac/cmn_services/crypto/src/wlan_crypto_fils.c index 3c5fc2cdde58..62ef60bf5520 100644 --- a/umac/cmn_services/crypto/src/wlan_crypto_fils.c +++ b/umac/cmn_services/crypto/src/wlan_crypto_fils.c @@ -432,6 +432,7 @@ void wlan_crypto_fils_delkey(struct wlan_objmgr_peer *peer) if (key) { qdf_mem_free(key->private); key->private = NULL; + key->valid = 0; } } #else diff --git a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c index 8ccfa6f18f61..71d19434c2df 100644 --- a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c +++ b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c @@ -3198,6 +3198,18 @@ uint16_t wlan_crypto_get_keyid(uint8_t *data, int hdrlen) { struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)data; uint8_t *iv; + uint8_t stype = WLAN_FC0_GET_STYPE(hdr->frame_control[0]); + + /* + * In FILS SK (Re)Association request/response frame has + * to be decrypted + */ + if ((stype == WLAN_FC0_STYPE_ASSOC_REQ) || + (stype == WLAN_FC0_STYPE_REASSOC_REQ) || + (stype == WLAN_FC0_STYPE_ASSOC_RESP) || + (stype == WLAN_FC0_STYPE_REASSOC_RESP)) { + return 0; + } if (hdr->frame_control[1] & WLAN_FC1_ISWEP) { iv = data + hdrlen;