qcacld-3.0: Correct the key type value in set key request

Send correct key type parameter value to crypto component in
set key request.

Change-Id: I17554a72f62e356871cb0a684a066c7d794f4d02
CRs-Fixed: 2388032
This commit is contained in:
Kiran Kumar Lokere
2019-01-24 18:38:33 -08:00
committed by nshrivas
parent 95341508ac
commit 47d0dacaf4
6 changed files with 52 additions and 15 deletions

View File

@@ -3807,7 +3807,8 @@ static QDF_STATUS wlan_hdd_set_key_helper(struct hdd_adapter *adapter,
vdev = hdd_objmgr_get_vdev(adapter);
if (!vdev)
return QDF_STATUS_E_FAILURE;
ret = wlan_cfg80211_crypto_add_key(vdev, true, 0);
ret = wlan_cfg80211_crypto_add_key(vdev,
WLAN_CRYPTO_KEY_TYPE_UNICAST, 0);
hdd_objmgr_put_vdev(adapter);
if (ret != 0) {
hdd_err("crypto add key fail, status: %d", ret);

View File

@@ -13991,7 +13991,8 @@ static int wlan_hdd_add_key_ibss(struct hdd_adapter *adapter,
vdev = hdd_objmgr_get_vdev(adapter);
if (!vdev)
return -EINVAL;
errno = wlan_cfg80211_crypto_add_key(vdev, pairwise, key_index);
errno = wlan_cfg80211_crypto_add_key(vdev, WLAN_CRYPTO_KEY_TYPE_GROUP,
key_index);
if (errno) {
hdd_err("add_ibss_key failed, errno: %d", errno);
hdd_objmgr_put_vdev(adapter);
@@ -14000,7 +14001,8 @@ static int wlan_hdd_add_key_ibss(struct hdd_adapter *adapter,
/* Save the keys here and call set_key for setting
* the PTK after peer joins the IBSS network
*/
wlan_cfg80211_store_key(vdev, key_index, true, mac_addr, params);
wlan_cfg80211_store_key(vdev, key_index, WLAN_CRYPTO_KEY_TYPE_UNICAST,
mac_addr, params);
hdd_objmgr_put_vdev(adapter);
adapter->session.station.ibss_enc_key_installed = 1;
@@ -14019,7 +14021,11 @@ static int wlan_hdd_add_key_sap(struct hdd_adapter *adapter,
if (!vdev)
return -EINVAL;
if (hostapd_state->bss_state == BSS_START)
errno = wlan_cfg80211_crypto_add_key(vdev, pairwise, key_index);
errno =
wlan_cfg80211_crypto_add_key(vdev, (pairwise ?
WLAN_CRYPTO_KEY_TYPE_UNICAST :
WLAN_CRYPTO_KEY_TYPE_GROUP),
key_index);
hdd_objmgr_put_vdev(adapter);
return errno;
@@ -14054,7 +14060,10 @@ static int wlan_hdd_add_key_sta(struct hdd_adapter *adapter,
vdev = hdd_objmgr_get_vdev(adapter);
if (!vdev)
return -EINVAL;
errno = wlan_cfg80211_crypto_add_key(vdev, pairwise, key_index);
errno = wlan_cfg80211_crypto_add_key(vdev, (pairwise ?
WLAN_CRYPTO_KEY_TYPE_UNICAST :
WLAN_CRYPTO_KEY_TYPE_GROUP),
key_index);
hdd_objmgr_put_vdev(adapter);
if (!errno && adapter->send_mode_change) {
wlan_hdd_send_mode_change_event();
@@ -14077,6 +14086,7 @@ static int __wlan_hdd_cfg80211_add_key(struct wiphy *wiphy,
bool key_already_installed = false, ft_mode = false;
enum wlan_crypto_cipher_type cipher;
int errno;
struct qdf_mac_addr mac_address;
hdd_enter();
@@ -14112,8 +14122,19 @@ static int __wlan_hdd_cfg80211_add_key(struct wiphy *wiphy,
vdev = hdd_objmgr_get_vdev(adapter);
if (!vdev)
return -EINVAL;
errno = wlan_cfg80211_store_key(vdev, key_index, pairwise, mac_addr,
params);
if (!pairwise && ((adapter->device_mode == QDF_STA_MODE) ||
(adapter->device_mode == QDF_P2P_CLIENT_MODE))) {
qdf_mem_copy(mac_address.bytes,
adapter->session.station.conn_info.bssId.bytes,
QDF_MAC_ADDR_SIZE);
} else {
qdf_mem_copy(mac_address.bytes, mac_addr, QDF_MAC_ADDR_SIZE);
}
errno = wlan_cfg80211_store_key(vdev, key_index,
(pairwise ?
WLAN_CRYPTO_KEY_TYPE_UNICAST :
WLAN_CRYPTO_KEY_TYPE_GROUP),
mac_address.bytes, params);
hdd_objmgr_put_vdev(adapter);
if (errno)
return errno;
@@ -14735,8 +14756,11 @@ static int __wlan_hdd_cfg80211_set_default_key(struct wiphy *wiphy,
}
if ((adapter->device_mode == QDF_STA_MODE) ||
(adapter->device_mode == QDF_P2P_CLIENT_MODE)) {
ret = wlan_cfg80211_crypto_add_key(adapter->vdev, unicast,
key_index);
ret =
wlan_cfg80211_crypto_add_key(adapter->vdev, (unicast ?
WLAN_CRYPTO_KEY_TYPE_UNICAST :
WLAN_CRYPTO_KEY_TYPE_GROUP),
key_index);
}
return ret;

View File

@@ -2828,9 +2828,12 @@ void lim_process_mlm_set_sta_key_rsp(struct mac_context *mac_ctx,
return;
}
set_key_params = msg->bodyptr;
session_id = set_key_params->sessionId;
sme_session_id = set_key_params->smesessionId;
session_entry = pe_find_session_by_session_id(mac_ctx, session_id);
session_entry = pe_find_session_by_sme_session_id(mac_ctx,
sme_session_id);
session_id = session_entry->peSessionId;
pe_debug("PE session ID %d, SME session id %d", session_id,
sme_session_id);
if (session_entry == NULL) {
pe_err("session does not exist for given session_id");
qdf_mem_free(msg->bodyptr);
@@ -2919,9 +2922,12 @@ void lim_process_mlm_set_bss_key_rsp(struct mac_context *mac_ctx,
pe_err("msg bodyptr is null");
return;
}
session_id = ((tpSetBssKeyParams) msg->bodyptr)->sessionId;
sme_session_id = ((tpSetBssKeyParams) msg->bodyptr)->smesessionId;
session_entry = pe_find_session_by_session_id(mac_ctx, session_id);
session_entry = pe_find_session_by_sme_session_id(mac_ctx,
sme_session_id);
session_id = session_entry->peSessionId;
pe_debug("PE session ID %d, SME session id %d", session_id,
sme_session_id);
if (session_entry == NULL) {
pe_err("session does not exist for given sessionId [%d]",
session_id);

View File

@@ -1390,7 +1390,8 @@ static QDF_STATUS wlan_sap_set_key_helper(struct sap_context *sap_ctx,
return QDF_STATUS_E_FAILURE;
}
return ucfg_crypto_set_key_req(sap_ctx->vdev, crypto_key, true);
return ucfg_crypto_set_key_req(sap_ctx->vdev, crypto_key,
WLAN_CRYPTO_KEY_TYPE_UNICAST);
}
#else
static QDF_STATUS wlan_sap_set_key_helper(struct sap_context *sap_ctx,

View File

@@ -9695,7 +9695,9 @@ static QDF_STATUS csr_roam_issue_set_context_req(struct mac_context *mac_ctx,
!add_key)
return QDF_STATUS_E_INVAL;
return ucfg_crypto_set_key_req(vdev, crypto_key, unicast);
return ucfg_crypto_set_key_req(vdev, crypto_key, (unicast ?
WLAN_CRYPTO_KEY_TYPE_UNICAST :
WLAN_CRYPTO_KEY_TYPE_GROUP));
}
QDF_STATUS csr_roam_issue_set_context_req_helper(

View File

@@ -5732,6 +5732,9 @@ void wma_update_set_key(uint8_t session_id, bool pairwise,
return;
}
iface = &wma->interfaces[session_id];
if (!iface)
wma_info("iface not found for session id %d", session_id);
wma_reset_ipn(iface, key_index);
if (iface && pairwise)
iface->ucast_key_cipher =