Subject: Can't set key with (GROUP_USAGE | TX_USAGE) for WPA/WPA2
1. Remove checking in ar6k_cfg80211_connect(), it already checks for
None AUth. (NONE_AUTH == arPriv->arAuthMode)
2. Add checking in ar6k_cfg80211_set_default_key(). WPA/WPA2 can't
set key with (GROUP_USAGE | TX_USAGE)
Without this patch, wifi firmware state machine may go wrong.
Signed-off-by: Samuel Chang <[email protected]>
diff -ruN kernel-2.6.37.6-92.2/drivers/staging/ar6003/os/linux/cfg80211.c
kernel-2.6.37.6-92.2_target_assertion_fix_patch/drivers/staging/ar6003/os/linux/cfg80211.c
--- kernel-2.6.37.6-92.2/drivers/staging/ar6003/os/linux/cfg80211.c
2011-06-15 02:06:12.863498128 +0800
+++
kernel-2.6.37.6-92.2_target_assertion_fix_patch/drivers/staging/ar6003/os/linux/cfg80211.c
2011-06-16 02:10:27.937656557 +0800
@@ -245,7 +245,6 @@
AR_SOFTC_T *ar = arPriv->arSoftc;
AR_SOFTC_STA_T *arSta = &arPriv->arSta;
A_STATUS status;
- A_UINT8 keyUsage = 0;
const unsigned char wps_oui[] = { 0x00, 0x50, 0xf2, 0x04 };
unsigned char *ie = sme->ie;
@@ -375,14 +374,9 @@
key->cipher = arPriv->arPairwiseCrypto;
arPriv->arDefTxKeyIndex = sme->key_idx;
- if (arPriv->arAuthMode & (WPA_PSK_AUTH | WPA2_PSK_AUTH))
- keyUsage = GROUP_USAGE;
- else
- keyUsage = GROUP_USAGE | TX_USAGE;
-
wmi_addKey_cmd(arPriv->arWmi, sme->key_idx,
arPriv->arPairwiseCrypto,
- keyUsage,
+ GROUP_USAGE | TX_USAGE,
key->key_len,
NULL,
key->key, KEY_OP_INIT_VAL, NULL,
@@ -1058,15 +1052,17 @@
return -EINVAL;
}
- arPriv->arDefTxKeyIndex = key_index;
- key = &arPriv->keys[arPriv->arDefTxKeyIndex];
- status = wmi_addKey_cmd(arPriv->arWmi, arPriv->arDefTxKeyIndex,
+ if (arPriv->arAuthMode < WPA_AUTH) {
+ arPriv->arDefTxKeyIndex = key_index;
+ key = &arPriv->keys[arPriv->arDefTxKeyIndex];
+ status = wmi_addKey_cmd(arPriv->arWmi, arPriv->arDefTxKeyIndex,
arPriv->arPairwiseCrypto, GROUP_USAGE | TX_USAGE,
key->key_len, key->seq, key->key, KEY_OP_INIT_VAL,
NULL, SYNC_BOTH_WMIFLAG);
- if (status != A_OK) {
- return -EIO;
- }
+ if (status != A_OK) {
+ return -EIO;
+ }
+ }
return 0;
}
Subject: Can't set key with (GROUP_USAGE | TX_USAGE) for WPA/WPA2
1. Remove checking in ar6k_cfg80211_connect(), it already checks for None AUth. (NONE_AUTH == arPriv->arAuthMode)
2. Add checking in ar6k_cfg80211_set_default_key(). WPA/WPA2 can't set key with (GROUP_USAGE | TX_USAGE)
Signed-off-by: Samuel Chang <[email protected]>
diff -ruN kernel-2.6.37.6-92.2/drivers/staging/ar6003/os/linux/cfg80211.c kernel-2.6.37.6-92.2_target_assertion_fix_patch/drivers/staging/ar6003/os/linux/cfg80211.c
--- kernel-2.6.37.6-92.2/drivers/staging/ar6003/os/linux/cfg80211.c 2011-06-15 02:06:12.863498128 +0800
+++ kernel-2.6.37.6-92.2_target_assertion_fix_patch/drivers/staging/ar6003/os/linux/cfg80211.c 2011-06-16 02:10:27.937656557 +0800
@@ -245,7 +245,6 @@
AR_SOFTC_T *ar = arPriv->arSoftc;
AR_SOFTC_STA_T *arSta = &arPriv->arSta;
A_STATUS status;
- A_UINT8 keyUsage = 0;
const unsigned char wps_oui[] = { 0x00, 0x50, 0xf2, 0x04 };
unsigned char *ie = sme->ie;
@@ -375,14 +374,9 @@
key->cipher = arPriv->arPairwiseCrypto;
arPriv->arDefTxKeyIndex = sme->key_idx;
- if (arPriv->arAuthMode & (WPA_PSK_AUTH | WPA2_PSK_AUTH))
- keyUsage = GROUP_USAGE;
- else
- keyUsage = GROUP_USAGE | TX_USAGE;
-
wmi_addKey_cmd(arPriv->arWmi, sme->key_idx,
arPriv->arPairwiseCrypto,
- keyUsage,
+ GROUP_USAGE | TX_USAGE,
key->key_len,
NULL,
key->key, KEY_OP_INIT_VAL, NULL,
@@ -1058,15 +1052,17 @@
return -EINVAL;
}
- arPriv->arDefTxKeyIndex = key_index;
- key = &arPriv->keys[arPriv->arDefTxKeyIndex];
- status = wmi_addKey_cmd(arPriv->arWmi, arPriv->arDefTxKeyIndex,
+ if (arPriv->arAuthMode < WPA_AUTH) {
+ arPriv->arDefTxKeyIndex = key_index;
+ key = &arPriv->keys[arPriv->arDefTxKeyIndex];
+ status = wmi_addKey_cmd(arPriv->arWmi, arPriv->arDefTxKeyIndex,
arPriv->arPairwiseCrypto, GROUP_USAGE | TX_USAGE,
key->key_len, key->seq, key->key, KEY_OP_INIT_VAL,
NULL, SYNC_BOTH_WMIFLAG);
- if (status != A_OK) {
- return -EIO;
- }
+ if (status != A_OK) {
+ return -EIO;
+ }
+ }
return 0;
}
_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel