@ -983,6 +983,7 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
struct ath6kl * ar = ath6kl_priv ( ndev ) ;
struct ath6kl_vif * vif = netdev_priv ( ndev ) ;
struct ath6kl_key * key = NULL ;
int seq_len ;
u8 key_usage ;
u8 key_type ;
@ -1011,23 +1012,21 @@ static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
else
key_usage = GROUP_USAGE ;
if ( params ) {
int seq_len = params - > seq_len ;
if ( params - > cipher = = WLAN_CIPHER_SUITE_SMS4 & &
seq_len > ATH6KL_KEY_SEQ_LEN ) {
/* Only first half of the WPI PN is configured */
seq_len = ATH6KL_KEY_SEQ_LEN ;
}
if ( params - > key_len > WLAN_MAX_KEY_LEN | |
seq_len > sizeof ( key - > seq ) )
return - EINVAL ;
key - > key_len = params - > key_len ;
memcpy ( key - > key , params - > key , key - > key_len ) ;
key - > seq_len = seq_len ;
memcpy ( key - > seq , params - > seq , key - > seq_len ) ;
key - > cipher = params - > cipher ;
seq_len = params - > seq_len ;
if ( params - > cipher = = WLAN_CIPHER_SUITE_SMS4 & &
seq_len > ATH6KL_KEY_SEQ_LEN ) {
/* Only first half of the WPI PN is configured */
seq_len = ATH6KL_KEY_SEQ_LEN ;
}
if ( params - > key_len > WLAN_MAX_KEY_LEN | |
seq_len > sizeof ( key - > seq ) )
return - EINVAL ;
key - > key_len = params - > key_len ;
memcpy ( key - > key , params - > key , key - > key_len ) ;
key - > seq_len = seq_len ;
memcpy ( key - > seq , params - > seq , key - > seq_len ) ;
key - > cipher = params - > cipher ;
switch ( key - > cipher ) {
case WLAN_CIPHER_SUITE_WEP40 :