]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: enable STBC only for STBC capable STAs
authorHelmut Schaa <helmut.schaa@googlemail.com>
Sat, 28 Aug 2010 09:25:44 +0000 (12:25 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 28 Aug 2010 09:25:44 +0000 (12:25 +0300)
hostapd simply used its own STBC configuration in the STA's HT caps. This
resulted in TX STBC being used for STAs not supporting RX STBC, which in
turn resulted in the STA not receiving anything.

Fix this by handling the STBC flags in the same way mac80211 does. Mask
out RX STBC if we don't support TX STBC and vice versa.

Tested only with the nl80211 driver and a STBC incapable STA.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
src/ap/ieee802_11_ht.c

index 1b39a6aaa9c783d3fdbf66a2f55688c3b7b59706..b193ee08cecdee26f3f957bb85b392a72b8a4af0 100644 (file)
@@ -256,7 +256,15 @@ void hostapd_get_ht_capab(struct hostapd_data *hapd,
        cap &= hapd->iconf->ht_capab;
        cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED);
 
-       /* FIXME: Rx STBC needs to be handled specially */
-       cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK);
+       /*
+        * STBC needs to be handled specially
+        * if we don't support RX STBC, mask out TX STBC in the STA's HT caps
+        * if we don't support TX STBC, mask out RX STBC in the STA's HT caps
+        */
+       if (!(hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK))
+               cap &= ~HT_CAP_INFO_TX_STBC;
+       if (!(hapd->iconf->ht_capab & HT_CAP_INFO_TX_STBC))
+               cap &= ~HT_CAP_INFO_RX_STBC_MASK;
+
        neg_ht_cap->ht_capabilities_info = host_to_le16(cap);
 }