summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrunal Soni <ksoni@codeaurora.org>2017-10-20 20:20:19 -0700
committersnandini <snandini@codeaurora.org>2017-10-25 02:05:14 -0700
commite1b0a396c0a319a5a2191d8d4461baa4337d33d3 (patch)
tree65e22845e4845c5413642d349143571d5804cc29
parentc292ecc3f82dd54922292379ed3f297b3551995a (diff)
qcacmn: Fix to propagate key-receiver-sequence-counter to WMI
SME module propagates KeyRSC to MAC/PE module but MAC/PE doesn't pass this counter to WMA and due to which WMA is not able pass to WMI module. Add a fix to propagate KeyRSC field from MAC to WMA module and WMA to WMI module. CRs-Fixed: 2130765 Change-Id: I0de6907bf8aa159eccb1d8310e7027f8fdf19fff
-rw-r--r--wmi/inc/wmi_unified_param.h7
-rw-r--r--wmi/src/wmi_unified_tlv.c2
2 files changed, 9 insertions, 0 deletions
diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h
index 6c28645a6420..1106bd1f01fb 100644
--- a/wmi/inc/wmi_unified_param.h
+++ b/wmi/inc/wmi_unified_param.h
@@ -1640,6 +1640,11 @@ struct wmi_probe_resp_params {
uint32_t ucProxyProbeReqValidIEBmap[8];
};
+struct key_seq_counter {
+ uint32_t key_seq_counter_l;
+ uint32_t key_seq_counter_h;
+};
+
/* struct set_key_params: structure containing
* installation key parameters
* @vdev_id: vdev id
@@ -1652,6 +1657,7 @@ struct wmi_probe_resp_params {
* @key_rxmic_len: rx mic length
* @rx_iv: receive IV, applicable only in case of WAPI
* @tx_iv: transmit IV, applicable only in case of WAPI
+ * @key_rsc_counter: RSC key counter
* @key_data: key data
*/
struct set_key_params {
@@ -1668,6 +1674,7 @@ struct set_key_params {
uint8_t tx_iv[16];
#endif
uint8_t key_data[WMI_MAC_MAX_KEY_LENGTH];
+ struct key_seq_counter key_rsc_counter;
};
/**
diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c
index 14ae445af614..18fabb7fe571 100644
--- a/wmi/src/wmi_unified_tlv.c
+++ b/wmi/src/wmi_unified_tlv.c
@@ -3922,6 +3922,8 @@ QDF_STATUS send_setup_install_key_cmd_tlv(wmi_unified_t wmi_handle,
key_data = (A_UINT8 *) (buf_ptr + WMI_TLV_HDR_SIZE);
qdf_mem_copy((void *)key_data,
(const void *)key_params->key_data, key_params->key_len);
+ qdf_mem_copy(&cmd->key_rsc_counter, &key_params->key_rsc_counter,
+ sizeof(wmi_key_seq_counter));
cmd->key_len = key_params->key_len;
status = wmi_unified_cmd_send(wmi_handle, buf, len,