aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>2012-04-10 04:57:47 -0400
committerKalle Valo <kvalo@qca.qualcomm.com>2012-04-12 03:37:13 -0400
commit9e8b16dbd0f642e14adccf52af46853418cab331 (patch)
treea8202f666096b014f528c5ecce55c1c23c7635c7 /drivers/net
parent798985c688722479191f6d6f4e5ab1a473904f0a (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.c20
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