ath6kl: Configure 0 as rsn cap when it is not there in rsn ie
authorVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
Tue, 10 Apr 2012 08:57:47 +0000 (14:27 +0530)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 12 Apr 2012 07:37:13 +0000 (10:37 +0300)
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>
drivers/net/wireless/ath/ath6kl/cfg80211.c

index 6b6bf93..12f2f61 100644 (file)
@@ -2582,28 +2582,34 @@ static int ath6kl_get_rsn_capab(struct cfg80211_beacon_data *beacon,
        /* skip element id and length */
        rsn_ie += 2;
 
-       /* skip version, group cipher */
-       if (rsn_ie_len < 6)
+       /* skip version */
+       if (rsn_ie_len < 2)
                return -EINVAL;
-       rsn_ie +=  6;
-       rsn_ie_len -= 6;
+       rsn_ie +=  2;
+       rsn_ie_len -= 2;
+
+       /* skip group cipher suite */
+       if (rsn_ie_len < 4)
+               return 0;
+       rsn_ie +=  4;
+       rsn_ie_len -= 4;
 
        /* skip pairwise cipher suite */
        if (rsn_ie_len < 2)
-               return -EINVAL;
+               return 0;
        cnt = get_unaligned_le16(rsn_ie);
        rsn_ie += (2 + cnt * 4);
        rsn_ie_len -= (2 + cnt * 4);
 
        /* skip akm suite */
        if (rsn_ie_len < 2)
-               return -EINVAL;
+               return 0;
        cnt = get_unaligned_le16(rsn_ie);
        rsn_ie += (2 + cnt * 4);
        rsn_ie_len -= (2 + cnt * 4);
 
        if (rsn_ie_len < 2)
-               return -EINVAL;
+               return 0;
 
        memcpy(rsn_capab, rsn_ie, 2);