diff options
author | David S. Miller <davem@davemloft.net> | 2008-10-07 19:26:38 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-10-07 19:26:38 -0400 |
commit | 075f664689b40217539ebfe856fab73d302a15f1 (patch) | |
tree | 751f96b1c264e103de2119c332f09d1cb6b4fdf0 /include | |
parent | b8bae41ed6a53cce56c50811a91cd963e3187d1c (diff) | |
parent | ad788b5e079484aa1d48aa90a3ebd7d954d2e7db (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'include')
-rw-r--r-- | include/net/mac80211.h | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index f5f5b1ff1584..5617a1613c91 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -292,6 +292,20 @@ enum mac80211_tx_control_flags { | |||
292 | #define IEEE80211_TX_INFO_DRIVER_DATA_PTRS \ | 292 | #define IEEE80211_TX_INFO_DRIVER_DATA_PTRS \ |
293 | (IEEE80211_TX_INFO_DRIVER_DATA_SIZE / sizeof(void *)) | 293 | (IEEE80211_TX_INFO_DRIVER_DATA_SIZE / sizeof(void *)) |
294 | 294 | ||
295 | /* maximum number of alternate rate retry stages */ | ||
296 | #define IEEE80211_TX_MAX_ALTRATE 3 | ||
297 | |||
298 | /** | ||
299 | * struct ieee80211_tx_altrate - alternate rate selection/status | ||
300 | * | ||
301 | * @rate_idx: rate index to attempt to send with | ||
302 | * @limit: number of retries before fallback | ||
303 | */ | ||
304 | struct ieee80211_tx_altrate { | ||
305 | s8 rate_idx; | ||
306 | u8 limit; | ||
307 | }; | ||
308 | |||
295 | /** | 309 | /** |
296 | * struct ieee80211_tx_info - skb transmit information | 310 | * struct ieee80211_tx_info - skb transmit information |
297 | * | 311 | * |
@@ -335,14 +349,14 @@ struct ieee80211_tx_info { | |||
335 | struct ieee80211_key_conf *hw_key; | 349 | struct ieee80211_key_conf *hw_key; |
336 | struct ieee80211_sta *sta; | 350 | struct ieee80211_sta *sta; |
337 | unsigned long jiffies; | 351 | unsigned long jiffies; |
338 | s8 rts_cts_rate_idx, alt_retry_rate_idx; | 352 | s8 rts_cts_rate_idx; |
339 | u8 retry_limit; | 353 | u8 retry_limit; |
340 | u8 icv_len; | 354 | struct ieee80211_tx_altrate retries[IEEE80211_TX_MAX_ALTRATE]; |
341 | u8 iv_len; | ||
342 | } control; | 355 | } control; |
343 | struct { | 356 | struct { |
344 | u64 ampdu_ack_map; | 357 | u64 ampdu_ack_map; |
345 | int ack_signal; | 358 | int ack_signal; |
359 | struct ieee80211_tx_altrate retries[IEEE80211_TX_MAX_ALTRATE + 1]; | ||
346 | u8 retry_count; | 360 | u8 retry_count; |
347 | bool excessive_retries; | 361 | bool excessive_retries; |
348 | u8 ampdu_ack_len; | 362 | u8 ampdu_ack_len; |
@@ -635,6 +649,8 @@ enum ieee80211_key_flags { | |||
635 | */ | 649 | */ |
636 | struct ieee80211_key_conf { | 650 | struct ieee80211_key_conf { |
637 | enum ieee80211_key_alg alg; | 651 | enum ieee80211_key_alg alg; |
652 | u8 icv_len; | ||
653 | u8 iv_len; | ||
638 | u8 hw_key_idx; | 654 | u8 hw_key_idx; |
639 | u8 flags; | 655 | u8 flags; |
640 | s8 keyidx; | 656 | s8 keyidx; |
@@ -828,6 +844,9 @@ enum ieee80211_hw_flags { | |||
828 | * within &struct ieee80211_vif. | 844 | * within &struct ieee80211_vif. |
829 | * @sta_data_size: size (in bytes) of the drv_priv data area | 845 | * @sta_data_size: size (in bytes) of the drv_priv data area |
830 | * within &struct ieee80211_sta. | 846 | * within &struct ieee80211_sta. |
847 | * | ||
848 | * @max_altrates: maximum number of alternate rate retry stages | ||
849 | * @max_altrate_tries: maximum number of tries for each stage | ||
831 | */ | 850 | */ |
832 | struct ieee80211_hw { | 851 | struct ieee80211_hw { |
833 | struct ieee80211_conf conf; | 852 | struct ieee80211_conf conf; |
@@ -844,6 +863,8 @@ struct ieee80211_hw { | |||
844 | u16 ampdu_queues; | 863 | u16 ampdu_queues; |
845 | u16 max_listen_interval; | 864 | u16 max_listen_interval; |
846 | s8 max_signal; | 865 | s8 max_signal; |
866 | u8 max_altrates; | ||
867 | u8 max_altrate_tries; | ||
847 | }; | 868 | }; |
848 | 869 | ||
849 | struct ieee80211_hw *wiphy_to_hw(struct wiphy *wiphy); | 870 | struct ieee80211_hw *wiphy_to_hw(struct wiphy *wiphy); |
@@ -900,11 +921,11 @@ ieee80211_get_rts_cts_rate(const struct ieee80211_hw *hw, | |||
900 | 921 | ||
901 | static inline struct ieee80211_rate * | 922 | static inline struct ieee80211_rate * |
902 | ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, | 923 | ieee80211_get_alt_retry_rate(const struct ieee80211_hw *hw, |
903 | const struct ieee80211_tx_info *c) | 924 | const struct ieee80211_tx_info *c, int idx) |
904 | { | 925 | { |
905 | if (c->control.alt_retry_rate_idx < 0) | 926 | if (c->control.retries[idx].rate_idx < 0) |
906 | return NULL; | 927 | return NULL; |
907 | return &hw->wiphy->bands[c->band]->bitrates[c->control.alt_retry_rate_idx]; | 928 | return &hw->wiphy->bands[c->band]->bitrates[c->control.retries[idx].rate_idx]; |
908 | } | 929 | } |
909 | 930 | ||
910 | /** | 931 | /** |