diff options
author | Felix Fietkau <nbd@openwrt.org> | 2011-08-20 09:53:55 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-09-14 13:56:16 -0400 |
commit | 8c771244fbab51661da7dbbabfa5dceffb3e3cce (patch) | |
tree | 10a8ac0c5fa3b05c82a614548832f2fec7d81261 /net/mac80211 | |
parent | d7549cbb9ab0674ef44ea15bd9f9ea1c685adfa6 (diff) |
mac80211: make ieee80211_send_bar available for drivers
To properly maintain the peer's block ack window, the driver needs to be
able to control the new starting sequence number that is sent along with
the BlockAckReq frame.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/agg-tx.c | 4 | ||||
-rw-r--r-- | net/mac80211/ieee80211_i.h | 1 | ||||
-rw-r--r-- | net/mac80211/status.c | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c index 250b9a53f6d9..3cef5a7281cb 100644 --- a/net/mac80211/agg-tx.c +++ b/net/mac80211/agg-tx.c | |||
@@ -104,8 +104,9 @@ static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata, | |||
104 | ieee80211_tx_skb(sdata, skb); | 104 | ieee80211_tx_skb(sdata, skb); |
105 | } | 105 | } |
106 | 106 | ||
107 | void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn) | 107 | void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn) |
108 | { | 108 | { |
109 | struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif); | ||
109 | struct ieee80211_local *local = sdata->local; | 110 | struct ieee80211_local *local = sdata->local; |
110 | struct sk_buff *skb; | 111 | struct sk_buff *skb; |
111 | struct ieee80211_bar *bar; | 112 | struct ieee80211_bar *bar; |
@@ -131,6 +132,7 @@ void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u1 | |||
131 | IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT; | 132 | IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT; |
132 | ieee80211_tx_skb(sdata, skb); | 133 | ieee80211_tx_skb(sdata, skb); |
133 | } | 134 | } |
135 | EXPORT_SYMBOL(ieee80211_send_bar); | ||
134 | 136 | ||
135 | void ieee80211_assign_tid_tx(struct sta_info *sta, int tid, | 137 | void ieee80211_assign_tid_tx(struct sta_info *sta, int tid, |
136 | struct tid_ampdu_tx *tid_tx) | 138 | struct tid_ampdu_tx *tid_tx) |
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index c204cee1189c..a37da74de023 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -1186,7 +1186,6 @@ struct ieee80211_tx_status_rtap_hdr { | |||
1186 | void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband, | 1186 | void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband, |
1187 | struct ieee80211_ht_cap *ht_cap_ie, | 1187 | struct ieee80211_ht_cap *ht_cap_ie, |
1188 | struct ieee80211_sta_ht_cap *ht_cap); | 1188 | struct ieee80211_sta_ht_cap *ht_cap); |
1189 | void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn); | ||
1190 | void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, | 1189 | void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, |
1191 | const u8 *da, u16 tid, | 1190 | const u8 *da, u16 tid, |
1192 | u16 initiator, u16 reason_code); | 1191 | u16 initiator, u16 reason_code); |
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index ba405bc4f812..14268465f1d8 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c | |||
@@ -136,7 +136,7 @@ static void ieee80211_check_pending_bar(struct sta_info *sta, u8 *addr, u8 tid) | |||
136 | return; | 136 | return; |
137 | 137 | ||
138 | tid_tx->bar_pending = false; | 138 | tid_tx->bar_pending = false; |
139 | ieee80211_send_bar(sta->sdata, addr, tid, tid_tx->failed_bar_ssn); | 139 | ieee80211_send_bar(&sta->sdata->vif, addr, tid, tid_tx->failed_bar_ssn); |
140 | } | 140 | } |
141 | 141 | ||
142 | static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb) | 142 | static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb) |
@@ -273,7 +273,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
273 | tid = qc[0] & 0xf; | 273 | tid = qc[0] & 0xf; |
274 | ssn = ((le16_to_cpu(hdr->seq_ctrl) + 0x10) | 274 | ssn = ((le16_to_cpu(hdr->seq_ctrl) + 0x10) |
275 | & IEEE80211_SCTL_SEQ); | 275 | & IEEE80211_SCTL_SEQ); |
276 | ieee80211_send_bar(sta->sdata, hdr->addr1, | 276 | ieee80211_send_bar(&sta->sdata->vif, hdr->addr1, |
277 | tid, ssn); | 277 | tid, ssn); |
278 | } | 278 | } |
279 | 279 | ||