Skip to content

Commit

Permalink
ath9k: Dont update rate control for every AMPDU
Browse files Browse the repository at this point in the history
Update the rate control only with the tx status of first
AMPDU of an aggregation. This patch fixes frequent drops
in throughput.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Vasanthakumar Thiagarajan authored and John W. Linville committed Nov 26, 2008
1 parent 40fc95d commit 7ac4701
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/net/wireless/ath9k/rc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1413,7 +1413,8 @@ static void ath_tx_status(void *priv, struct ieee80211_supported_band *sband,
an = (struct ath_node *)sta->drv_priv;
final_ts_idx = tx_info_priv->tx.ts_rateindex;

if (!an || !priv_sta || !ieee80211_is_data(fc))
if (!an || !priv_sta || !ieee80211_is_data(fc) ||
!tx_info_priv->update_rc)
goto exit;

if (tx_info_priv->tx.ts_status & ATH9K_TXERR_FILT)
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/ath9k/rc.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ struct ath_tx_info_priv {
struct ath_tx_status tx;
int n_frames;
int n_bad_frames;
bool update_rc;
};

#define ATH_TX_INFO_PRIV(tx_info) \
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/wireless/ath9k/xmit.c
Original file line number Diff line number Diff line change
Expand Up @@ -950,6 +950,7 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_desc *ds, int nbad)
struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
struct ath_tx_info_priv *tx_info_priv = ATH_TX_INFO_PRIV(tx_info);

tx_info_priv->update_rc = false;
if (ds->ds_txstat.ts_status & ATH9K_TXERR_FILT)
tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;

Expand All @@ -960,6 +961,7 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_desc *ds, int nbad)
sizeof(tx_info_priv->tx));
tx_info_priv->n_frames = bf->bf_nframes;
tx_info_priv->n_bad_frames = nbad;
tx_info_priv->update_rc = true;
}
}
}
Expand Down

0 comments on commit 7ac4701

Please sign in to comment.