iwlwifi: Monitor and recover the aggregation TX flow failure
authorTrieu 'Andrew' Nguyen <trieux.t.nguyen@intel.com>
Wed, 10 Feb 2010 18:27:34 +0000 (10:27 -0800)
committerReinette Chatre <reinette.chatre@intel.com>
Thu, 11 Feb 2010 18:27:41 +0000 (10:27 -0800)
commit1db5950f1d0b82e07371b211a48317b8972da063
tree6fc4f38f2c8cfd3a212c5eb18e326dd5d409ca2c
parenta9e10fb9b1c6ad16e73cf2656951fce3a817611e
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>
drivers/net/wireless/iwlwifi/iwl-agn.c
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-rx.c