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:

committed by
nshrivas

parent
95341508ac
commit
47d0dacaf4
@@ -3807,7 +3807,8 @@ static QDF_STATUS wlan_hdd_set_key_helper(struct hdd_adapter *adapter,
|
|||||||
vdev = hdd_objmgr_get_vdev(adapter);
|
vdev = hdd_objmgr_get_vdev(adapter);
|
||||||
if (!vdev)
|
if (!vdev)
|
||||||
return QDF_STATUS_E_FAILURE;
|
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);
|
hdd_objmgr_put_vdev(adapter);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
hdd_err("crypto add key fail, status: %d", ret);
|
hdd_err("crypto add key fail, status: %d", ret);
|
||||||
|
@@ -13991,7 +13991,8 @@ static int wlan_hdd_add_key_ibss(struct hdd_adapter *adapter,
|
|||||||
vdev = hdd_objmgr_get_vdev(adapter);
|
vdev = hdd_objmgr_get_vdev(adapter);
|
||||||
if (!vdev)
|
if (!vdev)
|
||||||
return -EINVAL;
|
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) {
|
if (errno) {
|
||||||
hdd_err("add_ibss_key failed, errno: %d", errno);
|
hdd_err("add_ibss_key failed, errno: %d", errno);
|
||||||
hdd_objmgr_put_vdev(adapter);
|
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
|
/* Save the keys here and call set_key for setting
|
||||||
* the PTK after peer joins the IBSS network
|
* 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);
|
hdd_objmgr_put_vdev(adapter);
|
||||||
adapter->session.station.ibss_enc_key_installed = 1;
|
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)
|
if (!vdev)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (hostapd_state->bss_state == BSS_START)
|
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);
|
hdd_objmgr_put_vdev(adapter);
|
||||||
|
|
||||||
return errno;
|
return errno;
|
||||||
@@ -14054,7 +14060,10 @@ static int wlan_hdd_add_key_sta(struct hdd_adapter *adapter,
|
|||||||
vdev = hdd_objmgr_get_vdev(adapter);
|
vdev = hdd_objmgr_get_vdev(adapter);
|
||||||
if (!vdev)
|
if (!vdev)
|
||||||
return -EINVAL;
|
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);
|
hdd_objmgr_put_vdev(adapter);
|
||||||
if (!errno && adapter->send_mode_change) {
|
if (!errno && adapter->send_mode_change) {
|
||||||
wlan_hdd_send_mode_change_event();
|
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;
|
bool key_already_installed = false, ft_mode = false;
|
||||||
enum wlan_crypto_cipher_type cipher;
|
enum wlan_crypto_cipher_type cipher;
|
||||||
int errno;
|
int errno;
|
||||||
|
struct qdf_mac_addr mac_address;
|
||||||
|
|
||||||
hdd_enter();
|
hdd_enter();
|
||||||
|
|
||||||
@@ -14112,8 +14122,19 @@ static int __wlan_hdd_cfg80211_add_key(struct wiphy *wiphy,
|
|||||||
vdev = hdd_objmgr_get_vdev(adapter);
|
vdev = hdd_objmgr_get_vdev(adapter);
|
||||||
if (!vdev)
|
if (!vdev)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
errno = wlan_cfg80211_store_key(vdev, key_index, pairwise, mac_addr,
|
if (!pairwise && ((adapter->device_mode == QDF_STA_MODE) ||
|
||||||
params);
|
(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);
|
hdd_objmgr_put_vdev(adapter);
|
||||||
if (errno)
|
if (errno)
|
||||||
return 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) ||
|
if ((adapter->device_mode == QDF_STA_MODE) ||
|
||||||
(adapter->device_mode == QDF_P2P_CLIENT_MODE)) {
|
(adapter->device_mode == QDF_P2P_CLIENT_MODE)) {
|
||||||
ret = wlan_cfg80211_crypto_add_key(adapter->vdev, unicast,
|
ret =
|
||||||
key_index);
|
wlan_cfg80211_crypto_add_key(adapter->vdev, (unicast ?
|
||||||
|
WLAN_CRYPTO_KEY_TYPE_UNICAST :
|
||||||
|
WLAN_CRYPTO_KEY_TYPE_GROUP),
|
||||||
|
key_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@@ -2828,9 +2828,12 @@ void lim_process_mlm_set_sta_key_rsp(struct mac_context *mac_ctx,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
set_key_params = msg->bodyptr;
|
set_key_params = msg->bodyptr;
|
||||||
session_id = set_key_params->sessionId;
|
|
||||||
sme_session_id = set_key_params->smesessionId;
|
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) {
|
if (session_entry == NULL) {
|
||||||
pe_err("session does not exist for given session_id");
|
pe_err("session does not exist for given session_id");
|
||||||
qdf_mem_free(msg->bodyptr);
|
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");
|
pe_err("msg bodyptr is null");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
session_id = ((tpSetBssKeyParams) msg->bodyptr)->sessionId;
|
|
||||||
sme_session_id = ((tpSetBssKeyParams) msg->bodyptr)->smesessionId;
|
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) {
|
if (session_entry == NULL) {
|
||||||
pe_err("session does not exist for given sessionId [%d]",
|
pe_err("session does not exist for given sessionId [%d]",
|
||||||
session_id);
|
session_id);
|
||||||
|
@@ -1390,7 +1390,8 @@ static QDF_STATUS wlan_sap_set_key_helper(struct sap_context *sap_ctx,
|
|||||||
return QDF_STATUS_E_FAILURE;
|
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
|
#else
|
||||||
static QDF_STATUS wlan_sap_set_key_helper(struct sap_context *sap_ctx,
|
static QDF_STATUS wlan_sap_set_key_helper(struct sap_context *sap_ctx,
|
||||||
|
@@ -9695,7 +9695,9 @@ static QDF_STATUS csr_roam_issue_set_context_req(struct mac_context *mac_ctx,
|
|||||||
!add_key)
|
!add_key)
|
||||||
return QDF_STATUS_E_INVAL;
|
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(
|
QDF_STATUS csr_roam_issue_set_context_req_helper(
|
||||||
|
@@ -5732,6 +5732,9 @@ void wma_update_set_key(uint8_t session_id, bool pairwise,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
iface = &wma->interfaces[session_id];
|
iface = &wma->interfaces[session_id];
|
||||||
|
if (!iface)
|
||||||
|
wma_info("iface not found for session id %d", session_id);
|
||||||
|
|
||||||
wma_reset_ipn(iface, key_index);
|
wma_reset_ipn(iface, key_index);
|
||||||
if (iface && pairwise)
|
if (iface && pairwise)
|
||||||
iface->ucast_key_cipher =
|
iface->ucast_key_cipher =
|
||||||
|
Reference in New Issue
Block a user