aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2011-08-20 09:53:55 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-14 13:56:16 -0400
commit8c771244fbab51661da7dbbabfa5dceffb3e3cce (patch)
tree10a8ac0c5fa3b05c82a614548832f2fec7d81261 /net
parentd7549cbb9ab0674ef44ea15bd9f9ea1c685adfa6 (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')
-rw-r--r--net/mac80211/agg-tx.c4
-rw-r--r--net/mac80211/ieee80211_i.h1
-rw-r--r--net/mac80211/status.c4
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
107void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn) 107void 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}
135EXPORT_SYMBOL(ieee80211_send_bar);
134 136
135void ieee80211_assign_tid_tx(struct sta_info *sta, int tid, 137void 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 {
1186void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband, 1186void 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);
1189void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn);
1190void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata, 1189void 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
142static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb) 142static 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