mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 16:46:15 -04:00
qcacmn: Support group key installation for VLAN
VLAN group keyix is greater than WLAN_CRYPTO_MAXKEYIDX Each VLAN will have separate group key in single VAP. CRs-Fixed: 2490599 Change-Id: I585b2deaa13da337c5df7b55ec8e4672221e4edb
This commit is contained in:
parent
5cdfcc879e
commit
17d1e0f676
5 changed files with 12 additions and 3 deletions
|
|
@ -49,6 +49,9 @@
|
|||
#define WLAN_CRYPTO_KEYIX_NONE ((uint16_t)-1)
|
||||
#define WLAN_CRYPTO_MAXKEYIDX (4)
|
||||
#define WLAN_CRYPTO_MAXIGTKKEYIDX (2)
|
||||
#ifndef WLAN_CRYPTO_MAX_VLANKEYIX
|
||||
#define WLAN_CRYPTO_MAX_VLANKEYIX WLAN_CRYPTO_MAXKEYIDX
|
||||
#endif
|
||||
#define WLAN_CRYPTO_MAX_PMKID (3)
|
||||
|
||||
/* 40 bit wep key len */
|
||||
|
|
|
|||
|
|
@ -433,7 +433,7 @@ struct wlan_crypto_mmie {
|
|||
*/
|
||||
struct wlan_crypto_comp_priv {
|
||||
struct wlan_crypto_params crypto_params;
|
||||
struct wlan_crypto_key *key[WLAN_CRYPTO_MAXKEYIDX];
|
||||
struct wlan_crypto_key *key[WLAN_CRYPTO_MAX_VLANKEYIX];
|
||||
struct wlan_crypto_key *igtk_key[WLAN_CRYPTO_MAXIGTKKEYIDX];
|
||||
uint32_t igtk_key_type;
|
||||
uint8_t def_tx_keyid;
|
||||
|
|
|
|||
|
|
@ -571,7 +571,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
|||
| WLAN_CRYPTO_KEY_RECV);
|
||||
}
|
||||
} else {
|
||||
if ((req_key->keyix >= WLAN_CRYPTO_MAXKEYIDX)
|
||||
if ((req_key->keyix >= WLAN_CRYPTO_MAX_VLANKEYIX)
|
||||
&& (!IS_MGMT_CIPHER(req_key->type))) {
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
|
@ -711,7 +711,7 @@ QDF_STATUS wlan_crypto_setkey(struct wlan_objmgr_vdev *vdev,
|
|||
uint16_t kid = req_key->keyix;
|
||||
if (kid == WLAN_CRYPTO_KEYIX_NONE)
|
||||
kid = 0;
|
||||
if (kid >= WLAN_CRYPTO_MAXKEYIDX) {
|
||||
if (kid >= WLAN_CRYPTO_MAX_VLANKEYIX) {
|
||||
crypto_err("invalid keyid %d", kid);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1795,6 +1795,7 @@ struct wmi_probe_resp_params {
|
|||
* @vdev_id: vdev id
|
||||
* @key_len: key length
|
||||
* @key_idx: key index
|
||||
* @group_key_idx: group key index for VLAN
|
||||
* @peer_mac: peer mac address
|
||||
* @key_flags: key flags, 0:pairwise key, 1:group key, 2:static key
|
||||
* @key_cipher: key cipher based on security mode
|
||||
|
|
@ -1812,6 +1813,7 @@ struct set_key_params {
|
|||
uint8_t vdev_id;
|
||||
uint16_t key_len;
|
||||
uint32_t key_idx;
|
||||
uint32_t group_key_idx;
|
||||
uint8_t peer_mac[QDF_MAC_ADDR_SIZE];
|
||||
uint32_t key_flags;
|
||||
uint32_t key_cipher;
|
||||
|
|
|
|||
|
|
@ -4117,6 +4117,10 @@ static QDF_STATUS send_setup_install_key_cmd_tlv(wmi_unified_t wmi_handle,
|
|||
(wmi_vdev_install_key_cmd_fixed_param));
|
||||
cmd->vdev_id = key_params->vdev_id;
|
||||
cmd->key_ix = key_params->key_idx;
|
||||
if (key_params->group_key_idx) {
|
||||
cmd->is_group_key_ix_valid = 1;
|
||||
cmd->group_key_ix = key_params->group_key_idx;
|
||||
}
|
||||
|
||||
|
||||
WMI_CHAR_ARRAY_TO_MAC_ADDR(key_params->peer_mac, &cmd->peer_macaddr);
|
||||
|
|
|
|||
Loading…
Reference in a new issue