| 1 | From: Helmut Schaa <helmut.schaa@googlemail.com> |
| 2 | Date: Sat, 28 Aug 2010 09:25:44 +0000 (+0300) |
| 3 | Subject: hostapd: enable STBC only for STBC capable STAs |
| 4 | X-Git-Url: http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=commitdiff_plain;h=36af1c7d31bdc5ba4dacacbf32d3c7585665ae2b |
| 5 | |
| 6 | hostapd: enable STBC only for STBC capable STAs |
| 7 | |
| 8 | hostapd simply used its own STBC configuration in the STA's HT caps. This |
| 9 | resulted in TX STBC being used for STAs not supporting RX STBC, which in |
| 10 | turn resulted in the STA not receiving anything. |
| 11 | |
| 12 | Fix this by handling the STBC flags in the same way mac80211 does. Mask |
| 13 | out RX STBC if we don't support TX STBC and vice versa. |
| 14 | |
| 15 | Tested only with the nl80211 driver and a STBC incapable STA. |
| 16 | |
| 17 | Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> |
| 18 | --- |
| 19 | |
| 20 | diff --git a/src/ap/ieee802_11_ht.c b/src/ap/ieee802_11_ht.c |
| 21 | index 1b39a6a..b193ee0 100644 |
| 22 | --- a/src/ap/ieee802_11_ht.c |
| 23 | +++ b/src/ap/ieee802_11_ht.c |
| 24 | @@ -256,7 +256,15 @@ void hostapd_get_ht_capab(struct hostapd_data *hapd, |
| 25 | cap &= hapd->iconf->ht_capab; |
| 26 | cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_SMPS_DISABLED); |
| 27 | |
| 28 | - /* FIXME: Rx STBC needs to be handled specially */ |
| 29 | - cap |= (hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK); |
| 30 | + /* |
| 31 | + * STBC needs to be handled specially |
| 32 | + * if we don't support RX STBC, mask out TX STBC in the STA's HT caps |
| 33 | + * if we don't support TX STBC, mask out RX STBC in the STA's HT caps |
| 34 | + */ |
| 35 | + if (!(hapd->iconf->ht_capab & HT_CAP_INFO_RX_STBC_MASK)) |
| 36 | + cap &= ~HT_CAP_INFO_TX_STBC; |
| 37 | + if (!(hapd->iconf->ht_capab & HT_CAP_INFO_TX_STBC)) |
| 38 | + cap &= ~HT_CAP_INFO_RX_STBC_MASK; |
| 39 | + |
| 40 | neg_ht_cap->ht_capabilities_info = host_to_le16(cap); |
| 41 | } |
| 42 | |