qcacmn: Fix IGTK key index
Fix IGTK key index for adding MIC IE in Broadcast packets. CRs-Fixed: 2672548 Change-Id: I8605acc0f484909e29b258ccb82e3966e9481efb
This commit is contained in:

committed by
nshrivas

parent
201e307efb
commit
4ed7012ed6
@@ -714,11 +714,8 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
igtk_idx = req_key->keyix - WLAN_CRYPTO_MAXKEYIDX;
|
||||
bigtk_idx = igtk_idx - WLAN_CRYPTO_MAXIGTKKEYIDX;
|
||||
if (is_igtk(req_key->keyix)) {
|
||||
bigtk_idx = 0;
|
||||
} else if (is_bigtk(req_key->keyix)) {
|
||||
igtk_idx = 0;
|
||||
} else {
|
||||
if (!is_igtk(req_key->keyix) &&
|
||||
!(is_bigtk(req_key->keyix))) {
|
||||
crypto_err("igtk/bigtk key invalid keyid %d",
|
||||
req_key->keyix);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
@@ -728,7 +725,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
|
||||
if (igtk_idx) {
|
||||
if (is_igtk(req_key->keyix)) {
|
||||
crypto_key = crypto_priv->igtk_key[igtk_idx];
|
||||
if (crypto_key)
|
||||
qdf_mem_free(crypto_key);
|
||||
@@ -736,6 +733,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
||||
crypto_priv->igtk_key[igtk_idx] = key;
|
||||
crypto_priv->igtk_key_type = req_key->type;
|
||||
crypto_priv->def_igtk_tx_keyid = igtk_idx;
|
||||
bigtk_idx = 0;
|
||||
} else {
|
||||
crypto_key = crypto_priv->bigtk_key[bigtk_idx];
|
||||
if (crypto_key)
|
||||
@@ -743,6 +741,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
crypto_priv->bigtk_key[bigtk_idx] = key;
|
||||
crypto_priv->def_bigtk_tx_keyid = bigtk_idx;
|
||||
igtk_idx = 0;
|
||||
}
|
||||
} else {
|
||||
if (IS_FILS_CIPHER(req_key->type)) {
|
||||
@@ -814,11 +813,8 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
igtk_idx = req_key->keyix - WLAN_CRYPTO_MAXKEYIDX;
|
||||
bigtk_idx = igtk_idx - WLAN_CRYPTO_MAXIGTKKEYIDX;
|
||||
if (is_igtk(req_key->keyix)) {
|
||||
bigtk_idx = 0;
|
||||
} else if (is_bigtk(req_key->keyix)) {
|
||||
igtk_idx = 0;
|
||||
} else {
|
||||
if (!is_igtk(req_key->keyix) &&
|
||||
!(is_bigtk(req_key->keyix))) {
|
||||
crypto_err("igtk/bigtk key invalid keyid %d",
|
||||
req_key->keyix);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
@@ -827,7 +823,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
||||
if (!key)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
if (igtk_idx) {
|
||||
if (is_igtk(req_key->keyix)) {
|
||||
crypto_key = crypto_priv->igtk_key[igtk_idx];
|
||||
if (crypto_key)
|
||||
qdf_mem_free(crypto_key);
|
||||
@@ -1223,15 +1219,11 @@ QDF_STATUS wlan_crypto_delkey(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t igtk_idx = key_idx - WLAN_CRYPTO_MAXKEYIDX;
|
||||
uint8_t bigtk_idx = igtk_idx - WLAN_CRYPTO_MAXIGTKKEYIDX;
|
||||
|
||||
if (is_igtk(key_idx)) {
|
||||
bigtk_idx = 0;
|
||||
} else if (is_bigtk(key_idx)) {
|
||||
igtk_idx = 0;
|
||||
} else {
|
||||
if (!is_igtk(key_idx) && !(is_bigtk(key_idx))) {
|
||||
crypto_err("igtk/bigtk key invalid keyid %d", key_idx);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
if (igtk_idx) {
|
||||
if (is_igtk(key_idx)) {
|
||||
key = crypto_priv->igtk_key[igtk_idx];
|
||||
crypto_priv->igtk_key[igtk_idx] = NULL;
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user