diff --git a/src/ap/ieee802_11_ht.c b/src/ap/ieee802_11_ht.c index 1b39a6aaa..b193ee08c 100644 --- a/src/ap/ieee802_11_ht.c +++ b/src/ap/ieee802_11_ht.c @@ -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); }