mac80211: add rate mask logic for vht rates
[deliverable/linux.git] / net / mac80211 / vht.c
index f05808d0d80f0c50c2b98940823cd20f61206dc2..834ccdbc74be1ccd518aaa952ad854810d94f4ca 100644 (file)
@@ -426,3 +426,29 @@ void ieee80211_vht_handle_opmode(struct ieee80211_sub_if_data *sdata,
        if (changed > 0)
                rate_control_rate_update(local, sband, sta, changed);
 }
+
+void ieee80211_get_vht_mask_from_cap(__le16 vht_cap,
+                                    u16 vht_mask[NL80211_VHT_NSS_MAX])
+{
+       int i;
+       u16 mask, cap = le16_to_cpu(vht_cap);
+
+       for (i = 0; i < NL80211_VHT_NSS_MAX; i++) {
+               mask = (cap >> i * 2) & IEEE80211_VHT_MCS_NOT_SUPPORTED;
+               switch (mask) {
+               case IEEE80211_VHT_MCS_SUPPORT_0_7:
+                       vht_mask[i] = 0x00FF;
+                       break;
+               case IEEE80211_VHT_MCS_SUPPORT_0_8:
+                       vht_mask[i] = 0x01FF;
+                       break;
+               case IEEE80211_VHT_MCS_SUPPORT_0_9:
+                       vht_mask[i] = 0x03FF;
+                       break;
+               case IEEE80211_VHT_MCS_NOT_SUPPORTED:
+               default:
+                       vht_mask[i] = 0;
+                       break;
+               }
+       }
+}
This page took 0.024762 seconds and 5 git commands to generate.