aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/driver-trace.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-01-18 07:51:05 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-01-19 11:36:11 -0500
commit0b01f030d38e00650e2db42da083d8647aad40a5 (patch)
tree14519750d9b6cdb046624dd87d5323a4826821e2 /net/mac80211/driver-trace.h
parentac1bd8464f161ed1475ef73c431b926256c6b5bb (diff)
mac80211: track receiver's aggregation reorder buffer size
The aggregation code currently doesn't implement the buffer size negotiation. It will always request a max buffer size (which is fine, if a little pointless, as the mac80211 code doesn't know and might just use 0 instead), but if the peer requests a smaller size it isn't possible to honour this request. In order to fix this, look at the buffer size in the addBA response frame, keep track of it and pass it to the driver in the ampdu_action callback when called with the IEEE80211_AMPDU_TX_OPERATIONAL action. That way the driver can limit the number of subframes in aggregates appropriately. Note that this doesn't fix any drivers apart from the addition of the new argument -- they all need to be updated separately to use this variable! Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/driver-trace.h')
-rw-r--r--net/mac80211/driver-trace.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/mac80211/driver-trace.h b/net/mac80211/driver-trace.h
index 49c84218b2f4..fbabbc2f181a 100644
--- a/net/mac80211/driver-trace.h
+++ b/net/mac80211/driver-trace.h
@@ -784,9 +784,9 @@ TRACE_EVENT(drv_ampdu_action,
784 struct ieee80211_sub_if_data *sdata, 784 struct ieee80211_sub_if_data *sdata,
785 enum ieee80211_ampdu_mlme_action action, 785 enum ieee80211_ampdu_mlme_action action,
786 struct ieee80211_sta *sta, u16 tid, 786 struct ieee80211_sta *sta, u16 tid,
787 u16 *ssn), 787 u16 *ssn, u8 buf_size),
788 788
789 TP_ARGS(local, sdata, action, sta, tid, ssn), 789 TP_ARGS(local, sdata, action, sta, tid, ssn, buf_size),
790 790
791 TP_STRUCT__entry( 791 TP_STRUCT__entry(
792 LOCAL_ENTRY 792 LOCAL_ENTRY
@@ -794,6 +794,7 @@ TRACE_EVENT(drv_ampdu_action,
794 __field(u32, action) 794 __field(u32, action)
795 __field(u16, tid) 795 __field(u16, tid)
796 __field(u16, ssn) 796 __field(u16, ssn)
797 __field(u8, buf_size)
797 VIF_ENTRY 798 VIF_ENTRY
798 ), 799 ),
799 800
@@ -804,11 +805,13 @@ TRACE_EVENT(drv_ampdu_action,
804 __entry->action = action; 805 __entry->action = action;
805 __entry->tid = tid; 806 __entry->tid = tid;
806 __entry->ssn = ssn ? *ssn : 0; 807 __entry->ssn = ssn ? *ssn : 0;
808 __entry->buf_size = buf_size;
807 ), 809 ),
808 810
809 TP_printk( 811 TP_printk(
810 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d", 812 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d buf:%d",
811 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action, __entry->tid 813 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action,
814 __entry->tid, __entry->buf_size
812 ) 815 )
813); 816);
814 817