65 lines
2.3 KiB
Diff
65 lines
2.3 KiB
Diff
|
--- a/net/mac80211/agg-tx.c
|
||
|
+++ b/net/mac80211/agg-tx.c
|
||
|
@@ -109,8 +109,9 @@ static void ieee80211_send_addba_request
|
||
|
ieee80211_tx_skb(sdata, skb);
|
||
|
}
|
||
|
|
||
|
-void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn)
|
||
|
+void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn)
|
||
|
{
|
||
|
+ struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
|
||
|
struct ieee80211_local *local = sdata->local;
|
||
|
struct sk_buff *skb;
|
||
|
struct ieee80211_bar *bar;
|
||
|
@@ -138,6 +139,7 @@ void ieee80211_send_bar(struct ieee80211
|
||
|
IEEE80211_SKB_CB(skb)->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT;
|
||
|
ieee80211_tx_skb(sdata, skb);
|
||
|
}
|
||
|
+EXPORT_SYMBOL(ieee80211_send_bar);
|
||
|
|
||
|
void ieee80211_assign_tid_tx(struct sta_info *sta, int tid,
|
||
|
struct tid_ampdu_tx *tid_tx)
|
||
|
--- a/include/net/mac80211.h
|
||
|
+++ b/include/net/mac80211.h
|
||
|
@@ -3007,6 +3007,19 @@ void ieee80211_remain_on_channel_expired
|
||
|
void ieee80211_stop_rx_ba_session(struct ieee80211_vif *vif, u16 ba_rx_bitmap,
|
||
|
const u8 *addr);
|
||
|
|
||
|
+/**
|
||
|
+ * ieee80211_send_bar - send a BlockAckReq frame
|
||
|
+ *
|
||
|
+ * can be used to flush pending frames from the peer's aggregation reorder
|
||
|
+ * buffer.
|
||
|
+ *
|
||
|
+ * @vif: &struct ieee80211_vif pointer from the add_interface callback.
|
||
|
+ * @ra: the peer's destination address
|
||
|
+ * @tid: the TID of the aggregation session
|
||
|
+ * @ssn: the new starting sequence number for the receiver
|
||
|
+ */
|
||
|
+void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn);
|
||
|
+
|
||
|
/* Rate control API */
|
||
|
|
||
|
/**
|
||
|
--- a/net/mac80211/ieee80211_i.h
|
||
|
+++ b/net/mac80211/ieee80211_i.h
|
||
|
@@ -1225,7 +1225,6 @@ struct ieee80211_tx_status_rtap_hdr {
|
||
|
void ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_supported_band *sband,
|
||
|
struct ieee80211_ht_cap *ht_cap_ie,
|
||
|
struct ieee80211_sta_ht_cap *ht_cap);
|
||
|
-void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u16 ssn);
|
||
|
void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata,
|
||
|
const u8 *da, u16 tid,
|
||
|
u16 initiator, u16 reason_code);
|
||
|
--- a/net/mac80211/status.c
|
||
|
+++ b/net/mac80211/status.c
|
||
|
@@ -239,7 +239,7 @@ void ieee80211_tx_status(struct ieee8021
|
||
|
tid = qc[0] & 0xf;
|
||
|
ssn = ((le16_to_cpu(hdr->seq_ctrl) + 0x10)
|
||
|
& IEEE80211_SCTL_SEQ);
|
||
|
- ieee80211_send_bar(sta->sdata, hdr->addr1,
|
||
|
+ ieee80211_send_bar(&sta->sdata->vif, hdr->addr1,
|
||
|
tid, ssn);
|
||
|
}
|
||
|
|