mac80211: sync with changes to patches submitted upstream
SVN-Revision: 18427
This commit is contained in:
parent
f87c3cbb3a
commit
a7ddfc6e79
2 changed files with 26 additions and 10 deletions
|
@ -1,6 +1,6 @@
|
||||||
--- a/include/net/mac80211.h
|
--- a/include/net/mac80211.h
|
||||||
+++ b/include/net/mac80211.h
|
+++ b/include/net/mac80211.h
|
||||||
@@ -386,11 +386,12 @@ struct ieee80211_tx_rate {
|
@@ -386,14 +386,17 @@ struct ieee80211_tx_rate {
|
||||||
* @flags: transmit info flags, defined above
|
* @flags: transmit info flags, defined above
|
||||||
* @band: the band to transmit on (use for checking for races)
|
* @band: the band to transmit on (use for checking for races)
|
||||||
* @antenna_sel_tx: antenna to use, 0 for automatic diversity
|
* @antenna_sel_tx: antenna to use, 0 for automatic diversity
|
||||||
|
@ -10,18 +10,34 @@
|
||||||
* @status: union for status data
|
* @status: union for status data
|
||||||
* @driver_data: array of driver_data pointers
|
* @driver_data: array of driver_data pointers
|
||||||
- * @ampdu_ack_len: number of aggregated frames.
|
- * @ampdu_ack_len: number of aggregated frames.
|
||||||
|
- * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
|
||||||
+ * @ampdu_ack_len: number of acked aggregated frames.
|
+ * @ampdu_ack_len: number of acked aggregated frames.
|
||||||
* relevant only if IEEE80211_TX_STATUS_AMPDU was set.
|
+ * relevant only if ieee80211_tx_status_ampdu was set.
|
||||||
* @ampdu_ack_map: block ack bit map for the aggregation.
|
* @ampdu_ack_map: block ack bit map for the aggregation.
|
||||||
* relevant only if IEEE80211_TX_STATUS_AMPDU was set.
|
* relevant only if IEEE80211_TX_STATUS_AMPDU was set.
|
||||||
@@ -403,8 +404,8 @@ struct ieee80211_tx_info {
|
+ * @ampdu_len: number of aggregated frames.
|
||||||
|
+ * relevant only if ieee80211_tx_status_ampdu was set.
|
||||||
|
* @ack_signal: signal strength of the ACK frame
|
||||||
|
*/
|
||||||
|
struct ieee80211_tx_info {
|
||||||
|
@@ -403,8 +406,8 @@ struct ieee80211_tx_info {
|
||||||
|
|
||||||
u8 antenna_sel_tx;
|
u8 antenna_sel_tx;
|
||||||
|
|
||||||
- /* 2 byte hole */
|
- /* 2 byte hole */
|
||||||
- u8 pad[2];
|
- u8 pad[2];
|
||||||
+ u8 driver_flags;
|
+ u8 driver_flags;
|
||||||
+ u8 ampdu_len;
|
+ u8 pad;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct {
|
struct {
|
||||||
|
@@ -428,7 +431,8 @@ struct ieee80211_tx_info {
|
||||||
|
u8 ampdu_ack_len;
|
||||||
|
u64 ampdu_ack_map;
|
||||||
|
int ack_signal;
|
||||||
|
- /* 8 bytes free */
|
||||||
|
+ u8 ampdu_len;
|
||||||
|
+ /* 7 bytes free */
|
||||||
|
} status;
|
||||||
|
struct {
|
||||||
|
struct ieee80211_tx_rate driver_rates[
|
||||||
|
|
|
@ -243,7 +243,7 @@
|
||||||
+ if ((ds->ds_txstat.ts_status & ATH9K_TXERR_XRETRY) ||
|
+ if ((ds->ds_txstat.ts_status & ATH9K_TXERR_XRETRY) ||
|
||||||
+ (ds->ds_txstat.ts_status & ATH9K_TXERR_FIFO))
|
+ (ds->ds_txstat.ts_status & ATH9K_TXERR_FIFO))
|
||||||
+ tx_info->driver_flags |= ATH_TX_INFO_XRETRY;
|
+ tx_info->driver_flags |= ATH_TX_INFO_XRETRY;
|
||||||
+ tx_info->ampdu_len = bf->bf_nframes;
|
+ tx_info->status.ampdu_len = bf->bf_nframes;
|
||||||
+ tx_info->status.ampdu_ack_len = bf->bf_nframes - nbad;
|
+ tx_info->status.ampdu_ack_len = bf->bf_nframes - nbad;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -293,7 +293,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
last_per = ath_rc_priv->per[tx_rate];
|
last_per = ath_rc_priv->per[tx_rate];
|
||||||
+ n_bad_frames = tx_info->ampdu_len - tx_info->status.ampdu_ack_len;
|
+ n_bad_frames = tx_info->status.ampdu_len - tx_info->status.ampdu_ack_len;
|
||||||
|
|
||||||
if (xretries) {
|
if (xretries) {
|
||||||
if (xretries == 1) {
|
if (xretries == 1) {
|
||||||
|
@ -312,7 +312,7 @@
|
||||||
*/
|
*/
|
||||||
- if (tx_info_priv->n_frames > 0) {
|
- if (tx_info_priv->n_frames > 0) {
|
||||||
- int n_frames, n_bad_frames;
|
- int n_frames, n_bad_frames;
|
||||||
+ if (tx_info->ampdu_len > 0) {
|
+ if (tx_info->status.ampdu_len > 0) {
|
||||||
+ int n_frames, n_bad_tries;
|
+ int n_frames, n_bad_tries;
|
||||||
u8 cur_per, new_per;
|
u8 cur_per, new_per;
|
||||||
|
|
||||||
|
@ -320,9 +320,9 @@
|
||||||
- tx_info_priv->n_bad_frames;
|
- tx_info_priv->n_bad_frames;
|
||||||
- n_frames = tx_info_priv->n_frames * (retries + 1);
|
- n_frames = tx_info_priv->n_frames * (retries + 1);
|
||||||
- cur_per = (100 * n_bad_frames / n_frames) >> 3;
|
- cur_per = (100 * n_bad_frames / n_frames) >> 3;
|
||||||
+ n_bad_tries = retries * tx_info->ampdu_len +
|
+ n_bad_tries = retries * tx_info->status.ampdu_len +
|
||||||
+ n_bad_frames;
|
+ n_bad_frames;
|
||||||
+ n_frames = tx_info->ampdu_len * (retries + 1);
|
+ n_frames = tx_info->status.ampdu_len * (retries + 1);
|
||||||
+ cur_per = (100 * n_bad_tries / n_frames) >> 3;
|
+ cur_per = (100 * n_bad_tries / n_frames) >> 3;
|
||||||
new_per = (u8)(last_per - (last_per >> 3) + cur_per);
|
new_per = (u8)(last_per - (last_per >> 3) + cur_per);
|
||||||
ath_rc_priv->per[tx_rate] = new_per;
|
ath_rc_priv->per[tx_rate] = new_per;
|
||||||
|
@ -333,7 +333,7 @@
|
||||||
if (ath_rc_priv->probe_rate && ath_rc_priv->probe_rate == tx_rate) {
|
if (ath_rc_priv->probe_rate && ath_rc_priv->probe_rate == tx_rate) {
|
||||||
- if (retries > 0 || 2 * tx_info_priv->n_bad_frames >
|
- if (retries > 0 || 2 * tx_info_priv->n_bad_frames >
|
||||||
- tx_info_priv->n_frames) {
|
- tx_info_priv->n_frames) {
|
||||||
+ if (retries > 0 || 2 * n_bad_frames > tx_info->ampdu_len) {
|
+ if (retries > 0 || 2 * n_bad_frames > tx_info->status.ampdu_len) {
|
||||||
/*
|
/*
|
||||||
* Since we probed with just a single attempt,
|
* Since we probed with just a single attempt,
|
||||||
* any retries means the probe failed. Also,
|
* any retries means the probe failed. Also,
|
||||||
|
|
Loading…
Reference in a new issue