diff options
author | Sujith <Sujith.Manoharan@atheros.com> | 2009-03-12 23:26:09 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-03-27 20:12:51 -0400 |
commit | 95e4acb7331722236b9f11492ae2e96473210ebc (patch) | |
tree | f84f1ec006046ae7e6ef598e7dfc3d73ac2d9fc5 | |
parent | e71cef37f1f4cb7e9c919cbaabe23438f10a7080 (diff) |
ath9k: Fill in ack signal in TX status
This patch fills the ack_signal field in TX status with an appropriate
value from the TX descriptor.
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath9k/xmit.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath9k/xmit.c b/drivers/net/wireless/ath9k/xmit.c index e3f376611f85..0aae8f349ff0 100644 --- a/drivers/net/wireless/ath9k/xmit.c +++ b/drivers/net/wireless/ath9k/xmit.c | |||
@@ -1852,13 +1852,17 @@ static int ath_tx_num_badfrms(struct ath_softc *sc, struct ath_buf *bf, | |||
1852 | return nbad; | 1852 | return nbad; |
1853 | } | 1853 | } |
1854 | 1854 | ||
1855 | static void ath_tx_rc_status(struct ath_buf *bf, struct ath_desc *ds, int nbad) | 1855 | static void ath_tx_rc_status(struct ath_buf *bf, struct ath_desc *ds, |
1856 | int nbad, int txok) | ||
1856 | { | 1857 | { |
1857 | struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu; | 1858 | struct sk_buff *skb = (struct sk_buff *)bf->bf_mpdu; |
1858 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; | 1859 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; |
1859 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); | 1860 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); |
1860 | struct ath_tx_info_priv *tx_info_priv = ATH_TX_INFO_PRIV(tx_info); | 1861 | struct ath_tx_info_priv *tx_info_priv = ATH_TX_INFO_PRIV(tx_info); |
1861 | 1862 | ||
1863 | if (txok) | ||
1864 | tx_info->status.ack_signal = ds->ds_txstat.ts_rssi; | ||
1865 | |||
1862 | tx_info_priv->update_rc = false; | 1866 | tx_info_priv->update_rc = false; |
1863 | if (ds->ds_txstat.ts_status & ATH9K_TXERR_FILT) | 1867 | if (ds->ds_txstat.ts_status & ATH9K_TXERR_FILT) |
1864 | tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED; | 1868 | tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED; |
@@ -1996,7 +2000,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq) | |||
1996 | nbad = ath_tx_num_badfrms(sc, bf, txok); | 2000 | nbad = ath_tx_num_badfrms(sc, bf, txok); |
1997 | } | 2001 | } |
1998 | 2002 | ||
1999 | ath_tx_rc_status(bf, ds, nbad); | 2003 | ath_tx_rc_status(bf, ds, nbad, txok); |
2000 | 2004 | ||
2001 | if (bf_isampdu(bf)) | 2005 | if (bf_isampdu(bf)) |
2002 | ath_tx_complete_aggr(sc, txq, bf, &bf_head, txok); | 2006 | ath_tx_complete_aggr(sc, txq, bf, &bf_head, txok); |