simplify STBC handling
authorOleksij Rempel <linux@rempel-privat.de>
Wed, 8 May 2013 08:57:51 +0000 (10:57 +0200)
committerOleksij Rempel <linux@rempel-privat.de>
Thu, 9 May 2013 07:06:32 +0000 (09:06 +0200)
Current STBC handler was waiting for peer caps to make decision.
Better way will be to make right decision on the host
and tell firmware what it can use.

This patch changes behaviour of firmware. Up now
host should send ATH_RC_TX_STBC_FLAG to enable STBC.

Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
target_firmware/wlan/ratectrl_11n_ln.c

index de8655016d2761327c8b6c63b7771795d40a38a6..788822c487edab5475e504481a7e47fcd9641e6c 100755 (executable)
@@ -438,8 +438,7 @@ rcSibUpdate_11n(struct ath_softc_tgt *sc, struct ath_node_target *pSib,
                       ((capflag & ATH_RC_DS_FLAG)   ? WLAN_RC_DS_FLAG  : 0) |
                       ((capflag & ATH_RC_HT40_SGI_FLAG)  ? WLAN_RC_HT40_SGI_FLAG : 0) | 
                       ((capflag & ATH_RC_HT_FLAG)   ? WLAN_RC_HT_FLAG  : 0) |
-                      ((capflag & ATH_RC_CW40_FLAG) ? WLAN_RC_40_FLAG  : 0) |
-                      ((capflag & ATH_RC_TX_STBC_FLAG)   ? WLAN_RC_STBC_FLAG  : 0), 
+                      ((capflag & ATH_RC_CW40_FLAG) ? WLAN_RC_40_FLAG  : 0),
                       keepState,
                       pRateSet);
 }
@@ -1220,18 +1219,8 @@ ath_rate_newassoc_11n(struct ath_softc_tgt *sc, struct ath_node_target *an, int
                        ((capflag & ATH_RC_WEP_TKIP_FLAG) ? WLAN_RC_WEP_TKIP_FLAG : 0);    
     
 #ifdef MAGPIE_MERLIN
-               /* Rx STBC is a 2-bit mask. Needs to convert from ath definition to wlan definition. */
-        
-               oan->htcap |= (((capflag & ATH_RC_RX_STBC_FLAG) >> ATH_RC_RX_STBC_FLAG_S)
-                              << WLAN_RC_STBC_FLAG_S);
-                       
-               /* If only one chain is enabled, do not do stbc. */
-               if (sc->sc_txstbcsupport) {
-                       oan->stbc = (capflag & ATH_RC_RX_STBC_FLAG) >> ATH_RC_RX_STBC_FLAG_S;
-               } else {
-                       oan->stbc = 0;
-               }
-        
+               /* Only MERLIN can send STBC */
+               oan->stbc = (capflag & ATH_RC_TX_STBC_FLAG) ? 1 : 0;
 #endif
                rcSibUpdate_11n(sc, an, oan->htcap, 0, rs);
        }