summaryrefslogtreecommitdiff
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 45155803c875..531b526a10db 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1188,6 +1188,8 @@ enum mac80211_rx_encoding {
* HT or VHT is used (%RX_FLAG_HT/%RX_FLAG_VHT)
* @nss: number of streams (VHT and HE only)
* @flag: %RX_FLAG_\*
+ * @airtime: Duration of frame in usec. See @IEEE80211_HW_AIRTIME_ACCOUNTING for
+ * how to use this.
* @encoding: &enum mac80211_rx_encoding
* @bw: &enum rate_info_bw
* @enc_flags: uses bits from &enum mac80211_rx_encoding_flags
@@ -1202,6 +1204,7 @@ struct ieee80211_rx_status {
u32 device_timestamp;
u32 ampdu_reference;
u32 flag;
+ u16 airtime;
u16 freq;
u8 enc_flags;
u8 encoding:2, bw:3;
@@ -2066,6 +2069,26 @@ struct ieee80211_txq {
* @IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA: Hardware supports buffer STA on
* TDLS links.
*
+ * @IEEE80211_HW_AIRTIME_ACCOUNTING: Hardware supports accounting the airtime
+ * usage of other stations and reports it in the @tx_time and/or @airtime
+ * fields of the TX/RX status structs.
+ * When setting this flag, the driver should ensure that the respective
+ * fields in the TX and RX status structs are always either zero or
+ * contains a valid duration for the frame in usec. The driver can choose
+ * to report either or both of TX and RX airtime, but it is recommended to
+ * report both.
+ * The reported airtime should as a minimum include all time that is spent
+ * transmitting to the remote station, including overhead and padding, but
+ * not including time spent waiting for a TXOP. If the time is not reported
+ * by the hardware it can in some cases be calculated from the rate and
+ * known frame composition. When possible, the time should include any
+ * failed transmission attempts.
+ * For aggregated frames, there are two possible strategies to report the
+ * airtime: Either include the airtime of the entire aggregate in the first
+ * (or last) frame and leave the others at zero. Alternatively, include the
+ * overhead of the full aggregate in the first or last frame and report the
+ * time of each frame + padding not including the full aggregate overhead.
+ *
* @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
*/
enum ieee80211_hw_flags {
@@ -2109,6 +2132,7 @@ enum ieee80211_hw_flags {
IEEE80211_HW_REPORTS_LOW_ACK,
IEEE80211_HW_SUPPORTS_TX_FRAG,
IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA,
+ IEEE80211_HW_AIRTIME_ACCOUNTING,
/* keep last, obviously */
NUM_IEEE80211_HW_FLAGS