diff options
author | Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com> | 2010-02-10 19:27:34 +0100 |
---|---|---|
committer | Reinette Chatre <reinette.chatre@intel.com> | 2010-02-11 19:27:41 +0100 |
commit | 1db5950f1d0b82e07371b211a48317b8972da063 (patch) | |
tree | 6fc4f38f2c8cfd3a212c5eb18e326dd5d409ca2c /drivers/net/wireless/iwlwifi/iwl-dev.h | |
parent | iwlwifi: clear all the stop_queue flag after load firmware (diff) | |
download | linux-1db5950f1d0b82e07371b211a48317b8972da063.tar.xz linux-1db5950f1d0b82e07371b211a48317b8972da063.zip |
iwlwifi: Monitor and recover the aggregation TX flow failure
This change monitors the tx statistics to detect the drop in throughput.
When the throughput drops, the ratio of the actual_ack_count and the expected_
ack_count also drops. At the same time, the aggregated ba_timeout (the number
of ba timeout retries) also rises. If the actual_ack_count/expected_ack_count
ratio is 0 and the number of ba timeout retries rises to 16, no tx packets
(tcp, udp, or ping - icmp) can be delivered. The driver recovers from this
situation by reseting the uCode firmware. If the actual_ack_count/expected_
ack_count ratio drops below 50% (but not 0) and the aggregated ba_timeout
retries just exceed 5 (but not 16), then the driver can reset the radio to
bring the throughput up.
Signed-off-by: Trieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-dev.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-dev.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h index 71cf1558e640..f81317d478ee 100644 --- a/drivers/net/wireless/iwlwifi/iwl-dev.h +++ b/drivers/net/wireless/iwlwifi/iwl-dev.h @@ -1072,6 +1072,9 @@ struct iwl_priv { /* storing the jiffies when the plcp error rate is received */ unsigned long plcp_jiffies; + /* reporting the number of tids has AGG on. 0 means no AGGREGATION */ + u8 agg_tids_count; + /* force reset */ unsigned long last_force_reset_jiffies; |