Author: adrian
Date: Sun Mar 13 08:23:59 2011
New Revision: 219588
URL: http://svn.freebsd.org/changeset/base/219588

Log:
  The number of streams is not based on the interface stream count, but the
  number of streams needed for that MCS rate.

Modified:
  head/sys/dev/ath/if_ath_tx_ht.c

Modified: head/sys/dev/ath/if_ath_tx_ht.c
==============================================================================
--- head/sys/dev/ath/if_ath_tx_ht.c     Sun Mar 13 08:22:46 2011        
(r219587)
+++ head/sys/dev/ath/if_ath_tx_ht.c     Sun Mar 13 08:23:59 2011        
(r219588)
@@ -98,6 +98,7 @@ ath_rateseries_setup(struct ath_softc *s
     HAL_11N_RATE_SERIES *series, unsigned int pktlen, uint8_t *rix,
     uint8_t *try, int flags)
 {
+#define        HT_RC_2_STREAMS(_rc)    ((((_rc) & 0x78) >> 3) + 1)
        struct ieee80211com *ic = ni->ni_ic;
        struct ath_hal *ah = sc->sc_ah;
        HAL_BOOL shortPreamble = AH_FALSE;
@@ -151,14 +152,15 @@ ath_rateseries_setup(struct ath_softc *s
                        series[i].PktDuration =
                            ath_computedur_ht(pktlen
                                , series[i].Rate
-                               , ic->ic_txstream
-                               , 0 /* disable 20/40 for now */
+                               , HT_RC_2_STREAMS(series[i].Rate)
+                               , series[i].RateFlags & HAL_RATESERIES_2040
                                , series[i].RateFlags & HAL_RATESERIES_HALFGI);
                } else {
                        series[i].PktDuration = ath_hal_computetxtime(ah,
                            rt, pktlen, rix[i], shortPreamble);
                }
        }
+#undef HT_RC_2_STREAMS
 }
 
 #if 0
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to