summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAjit Vaishya <avaishya@codeaurora.org>2021-07-02 10:38:19 -0700
committerHsiu Chang Chen <hsiuchangchen@google.com>2021-08-05 04:27:05 +0000
commit7b1331a00c8ad5a7fe35b46ff4376d4d289ca97a (patch)
treef478977c471f6e0a3165c83c63eda78dad696577
parent52e5a672f1bc3fb8c6596705c1f174a18750d340 (diff)
downloadqcacld-android-msm-barbet-4.19-android12.tar.gz
Currently, due to incorrect peer, flushing of fragments frame as part of add key is not happening for destined peer. So because of this reassembly of fragment frame is not discarding after rekey done. Fix this issue by updating destined peer properly before flushing. Bug: 195071560 Change-Id: I51db68949e887edf49468c61058875eeb43bcd77 CRs-Fixed: 2976643 Signed-off-by: Hsiu-Chang Chen <hsiuchangchen@google.com>
-rw-r--r--core/hdd/src/wlan_hdd_cfg80211.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index de5d602fe7..64a766dc21 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -16496,6 +16496,18 @@ static int __wlan_hdd_cfg80211_add_key(struct wiphy *wiphy,
qdf_mem_copy(&set_key.Key[0], params->key, params->key_len);
qdf_mem_copy(&set_key.keyRsc[0], params->seq, params->seq_len);
+ if (!pairwise) {
+ /* set group key */
+ hdd_debug("setting Broadcast key");
+ set_key.keyDirection = eSIR_RX_ONLY;
+ qdf_set_macaddr_broadcast(&set_key.peerMac);
+ } else {
+ /* set pairwise key */
+ hdd_debug("setting pairwise key");
+ set_key.keyDirection = eSIR_TX_RX;
+ qdf_mem_copy(set_key.peerMac.bytes, mac_addr, QDF_MAC_ADDR_SIZE);
+ }
+
mac_handle = hdd_ctx->mac_handle;
cdp_peer_flush_frags(cds_get_context(QDF_MODULE_ID_SOC),
@@ -16598,17 +16610,6 @@ static int __wlan_hdd_cfg80211_add_key(struct wiphy *wiphy,
hdd_debug("encryption type %d", set_key.encType);
- if (!pairwise) {
- /* set group key */
- hdd_debug("setting Broadcast key");
- set_key.keyDirection = eSIR_RX_ONLY;
- qdf_set_macaddr_broadcast(&set_key.peerMac);
- } else {
- /* set pairwise key */
- hdd_debug("setting pairwise key");
- set_key.keyDirection = eSIR_TX_RX;
- qdf_mem_copy(set_key.peerMac.bytes, mac_addr, QDF_MAC_ADDR_SIZE);
- }
if ((QDF_IBSS_MODE == adapter->device_mode) && !pairwise) {
/* if a key is already installed, block all subsequent ones */
if (adapter->session.station.ibss_enc_key_installed) {