diff options
author | Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com> | 2012-04-10 04:57:47 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2012-04-12 03:37:13 -0400 |
commit | 9e8b16dbd0f642e14adccf52af46853418cab331 (patch) | |
tree | a8202f666096b014f528c5ecce55c1c23c7635c7 /drivers/net | |
parent | 798985c688722479191f6d6f4e5ab1a473904f0a (diff) |
ath6kl: Configure 0 as rsn cap when it is not there in rsn ie
Currently rsn capability is not set when it is not available in
rsn IE. Set it to 0 in firmware when it is not there in the ie to
make sure host and target are consistent.
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index 6b6bf938feef..12f2f616d380 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
@@ -2582,28 +2582,34 @@ static int ath6kl_get_rsn_capab(struct cfg80211_beacon_data *beacon, | |||
2582 | /* skip element id and length */ | 2582 | /* skip element id and length */ |
2583 | rsn_ie += 2; | 2583 | rsn_ie += 2; |
2584 | 2584 | ||
2585 | /* skip version, group cipher */ | 2585 | /* skip version */ |
2586 | if (rsn_ie_len < 6) | 2586 | if (rsn_ie_len < 2) |
2587 | return -EINVAL; | 2587 | return -EINVAL; |
2588 | rsn_ie += 6; | 2588 | rsn_ie += 2; |
2589 | rsn_ie_len -= 6; | 2589 | rsn_ie_len -= 2; |
2590 | |||
2591 | /* skip group cipher suite */ | ||
2592 | if (rsn_ie_len < 4) | ||
2593 | return 0; | ||
2594 | rsn_ie += 4; | ||
2595 | rsn_ie_len -= 4; | ||
2590 | 2596 | ||
2591 | /* skip pairwise cipher suite */ | 2597 | /* skip pairwise cipher suite */ |
2592 | if (rsn_ie_len < 2) | 2598 | if (rsn_ie_len < 2) |
2593 | return -EINVAL; | 2599 | return 0; |
2594 | cnt = get_unaligned_le16(rsn_ie); | 2600 | cnt = get_unaligned_le16(rsn_ie); |
2595 | rsn_ie += (2 + cnt * 4); | 2601 | rsn_ie += (2 + cnt * 4); |
2596 | rsn_ie_len -= (2 + cnt * 4); | 2602 | rsn_ie_len -= (2 + cnt * 4); |
2597 | 2603 | ||
2598 | /* skip akm suite */ | 2604 | /* skip akm suite */ |
2599 | if (rsn_ie_len < 2) | 2605 | if (rsn_ie_len < 2) |
2600 | return -EINVAL; | 2606 | return 0; |
2601 | cnt = get_unaligned_le16(rsn_ie); | 2607 | cnt = get_unaligned_le16(rsn_ie); |
2602 | rsn_ie += (2 + cnt * 4); | 2608 | rsn_ie += (2 + cnt * 4); |
2603 | rsn_ie_len -= (2 + cnt * 4); | 2609 | rsn_ie_len -= (2 + cnt * 4); |
2604 | 2610 | ||
2605 | if (rsn_ie_len < 2) | 2611 | if (rsn_ie_len < 2) |
2606 | return -EINVAL; | 2612 | return 0; |
2607 | 2613 | ||
2608 | memcpy(rsn_capab, rsn_ie, 2); | 2614 | memcpy(rsn_capab, rsn_ie, 2); |
2609 | 2615 | ||