purge HAL_TXSTAT_ALTRATE; you can figure this out by checking ts_finaltsi
and it cannot be used with MCS rate codes
This commit is contained in:
parent
d0f0da4e4f
commit
4fd5fd850e
@ -14,7 +14,7 @@
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* $Id: ah_desc.h,v 1.5 2008/11/10 04:08:00 sam Exp $
|
||||
* $FreeBSD$
|
||||
*/
|
||||
|
||||
#ifndef _DEV_ATH_DESC_H
|
||||
@ -36,7 +36,6 @@ struct ath_tx_status {
|
||||
uint16_t ts_tstamp; /* h/w assigned timestamp */
|
||||
uint8_t ts_status; /* frame status, 0 => xmit ok */
|
||||
uint8_t ts_rate; /* h/w transmit rate index */
|
||||
#define HAL_TXSTAT_ALTRATE 0x80 /* alternate xmit rate used */
|
||||
int8_t ts_rssi; /* tx ack RSSI */
|
||||
uint8_t ts_shortretry; /* # short retries */
|
||||
uint8_t ts_longretry; /* # long retries */
|
||||
|
@ -869,16 +869,13 @@ ar5212ProcTxDesc(struct ath_hal *ah,
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate0);
|
||||
break;
|
||||
case 1:
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate1) |
|
||||
HAL_TXSTAT_ALTRATE;
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate1);
|
||||
break;
|
||||
case 2:
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate2) |
|
||||
HAL_TXSTAT_ALTRATE;
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate2);
|
||||
break;
|
||||
case 3:
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate3) |
|
||||
HAL_TXSTAT_ALTRATE;
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate3);
|
||||
break;
|
||||
}
|
||||
ts->ts_rssi = MS(ads->ds_txstatus1, AR_AckSigStrength);
|
||||
|
@ -519,16 +519,13 @@ ar5416ProcTxDesc(struct ath_hal *ah,
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate0);
|
||||
break;
|
||||
case 1:
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate1) |
|
||||
HAL_TXSTAT_ALTRATE;
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate1);
|
||||
break;
|
||||
case 2:
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate2) |
|
||||
HAL_TXSTAT_ALTRATE;
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate2);
|
||||
break;
|
||||
case 3:
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate3) |
|
||||
HAL_TXSTAT_ALTRATE;
|
||||
ts->ts_rate = MS(ads->ds_ctl3, AR_XmitRate3);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -561,7 +561,7 @@ ath_rate_tx_complete(struct ath_softc *sc, struct ath_node *an,
|
||||
const HAL_RATE_TABLE *rt = sc->sc_currates;
|
||||
int mrr;
|
||||
|
||||
final_rix = rt->rateCodeToIndex[ts->ts_rate &~ HAL_TXSTAT_ALTRATE];
|
||||
final_rix = rt->rateCodeToIndex[ts->ts_rate];
|
||||
short_tries = ts->ts_shortretry;
|
||||
long_tries = ts->ts_longretry + 1;
|
||||
frame_size = ds0->ds_ctl0 & 0x0fff; /* low-order 12 bits of ds_ctl0 */
|
||||
@ -579,7 +579,7 @@ ath_rate_tx_complete(struct ath_softc *sc, struct ath_node *an,
|
||||
return;
|
||||
}
|
||||
mrr = sc->sc_mrretry && !(ic->ic_flags & IEEE80211_F_USEPROT);
|
||||
if (!mrr || !(ts->ts_rate & HAL_TXSTAT_ALTRATE)) {
|
||||
if (!mrr || ts->ts_finaltsi == 0) {
|
||||
if (!IS_RATE_DEFINED(sn, final_rix)) {
|
||||
badrate(ifp, 0, ts->ts_rate, long_tries, ts->ts_status);
|
||||
return;
|
||||
|
@ -4918,7 +4918,7 @@ ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
|
||||
u_int8_t txant = ts->ts_antenna;
|
||||
sc->sc_stats.ast_ant_tx[txant]++;
|
||||
sc->sc_ant_tx[txant]++;
|
||||
if (ts->ts_rate & HAL_TXSTAT_ALTRATE)
|
||||
if (ts->ts_finaltsi != 0)
|
||||
sc->sc_stats.ast_tx_altrate++;
|
||||
pri = M_WME_GETAC(bf->bf_m);
|
||||
if (pri >= WME_AC_VO)
|
||||
|
Loading…
Reference in New Issue
Block a user