diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 31 |
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 | */ | ||
1628 | enum 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 | */ |
1935 | struct ieee80211_ops { | 1960 | struct 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 | /** |