diff options
author | Helmut Schaa <helmut.schaa@googlemail.com> | 2010-10-02 05:31:55 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-10-05 13:35:28 -0400 |
commit | 78be49ec2a0df34de9441930fdced20311fd709f (patch) | |
tree | 0eb6da18b78abc19e58b1cfd2375c548454186a8 /net/mac80211/main.c | |
parent | 5a5b6ed6ce46be128f2a5a9e56f47193c3ac3e32 (diff) |
mac80211: distinct between max rates and the number of rates the hw can report
Some drivers cannot handle multiple retry rates specified by the rc
algorithm but instead use their own retry table (for example rt2800).
However, if such a device registers itself with a max_rates value of 1
the rc algorithm cannot make use of the extended information the device
can provide about retried rates. On the other hand, if a device
registers itself with a max_rates value > 1 the rc algorithm assumes
that the device can handle multi rate retries.
Fix this issue by introducing another hw parameter max_report_rates that
can be set to a different value then max_rates to indicate if a device
is capable of reporting more rates then specified in max_rates.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r-- | net/mac80211/main.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index e127fbb8424e..9c2f3f934c74 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -537,6 +537,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
537 | /* set up some defaults */ | 537 | /* set up some defaults */ |
538 | local->hw.queues = 1; | 538 | local->hw.queues = 1; |
539 | local->hw.max_rates = 1; | 539 | local->hw.max_rates = 1; |
540 | local->hw.max_report_rates = 0; | ||
540 | local->hw.conf.long_frame_max_tx_count = wiphy->retry_long; | 541 | local->hw.conf.long_frame_max_tx_count = wiphy->retry_long; |
541 | local->hw.conf.short_frame_max_tx_count = wiphy->retry_short; | 542 | local->hw.conf.short_frame_max_tx_count = wiphy->retry_short; |
542 | local->user_power_level = -1; | 543 | local->user_power_level = -1; |
@@ -612,6 +613,9 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
612 | WLAN_CIPHER_SUITE_AES_CMAC | 613 | WLAN_CIPHER_SUITE_AES_CMAC |
613 | }; | 614 | }; |
614 | 615 | ||
616 | if (hw->max_report_rates == 0) | ||
617 | hw->max_report_rates = hw->max_rates; | ||
618 | |||
615 | /* | 619 | /* |
616 | * generic code guarantees at least one band, | 620 | * generic code guarantees at least one band, |
617 | * set this very early because much code assumes | 621 | * set this very early because much code assumes |