aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index acf9eaf59641..dc2ea46eb5d6 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1622,6 +1622,14 @@ enum ieee80211_tx_sync_type {
1622}; 1622};
1623 1623
1624/** 1624/**
1625 * enum ieee80211_frame_release_type - frame release reason
1626 * @IEEE80211_FRAME_RELEASE_PSPOLL: frame released for PS-Poll
1627 */
1628enum ieee80211_frame_release_type {
1629 IEEE80211_FRAME_RELEASE_PSPOLL,
1630};
1631
1632/**
1625 * struct ieee80211_ops - callbacks from mac80211 to the driver 1633 * struct ieee80211_ops - callbacks from mac80211 to the driver
1626 * 1634 *
1627 * This structure contains various callbacks that the driver may 1635 * This structure contains various callbacks that the driver may
@@ -1931,6 +1939,23 @@ enum ieee80211_tx_sync_type {
1931 * The callback can sleep. 1939 * The callback can sleep.
1932 * @rssi_callback: Notify driver when the average RSSI goes above/below 1940 * @rssi_callback: Notify driver when the average RSSI goes above/below
1933 * thresholds that were registered previously. The callback can sleep. 1941 * thresholds that were registered previously. The callback can sleep.
1942 *
1943 * @release_buffered_frames: Release buffered frames according to the given
1944 * parameters. In the case where the driver buffers some frames for
1945 * sleeping stations mac80211 will use this callback to tell the driver
1946 * to release some frames, either for PS-poll or uAPSD.
1947 * Note that if the @more_data paramter is %false the driver must check
1948 * if there are more frames on the given TIDs, and if there are more than
1949 * the frames being released then it must still set the more-data bit in
1950 * the frame. If the @more_data parameter is %true, then of course the
1951 * more-data bit must always be set.
1952 * The @tids parameter tells the driver which TIDs to release frames
1953 * from, for PS-poll it will always have only a single bit set.
1954 * In the case this is used for uAPSD, the @num_frames parameter may be
1955 * bigger than one, but the driver may send fewer frames (it must send
1956 * at least one, however). In this case it is also responsible for
1957 * setting the EOSP flag in the QoS header of the frames.
1958 * This callback must be atomic.
1934 */ 1959 */
1935struct ieee80211_ops { 1960struct ieee80211_ops {
1936 void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); 1961 void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
@@ -2045,6 +2070,12 @@ struct ieee80211_ops {
2045 const struct cfg80211_bitrate_mask *mask); 2070 const struct cfg80211_bitrate_mask *mask);
2046 void (*rssi_callback)(struct ieee80211_hw *hw, 2071 void (*rssi_callback)(struct ieee80211_hw *hw,
2047 enum ieee80211_rssi_event rssi_event); 2072 enum ieee80211_rssi_event rssi_event);
2073
2074 void (*release_buffered_frames)(struct ieee80211_hw *hw,
2075 struct ieee80211_sta *sta,
2076 u16 tids, int num_frames,
2077 enum ieee80211_frame_release_type reason,
2078 bool more_data);
2048}; 2079};
2049 2080
2050/** 2081/**