cfg80211: Expose TXQ stats and parameters to userspace
This adds support for exporting the mac80211 TXQ stats via nl80211 by way of a nested TXQ stats attribute, as well as for configuring the quantum and limits that were previously only changeable through debugfs. This commit adds just the nl80211 API, a subsequent commit adds support to mac80211 itself. Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
cc60dbbfed
commit
52539ca89f
@@ -2226,6 +2226,16 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_NSS: Station's New/updated RX_NSS value notified using this
|
||||
* u8 attribute. This is used with %NL80211_CMD_STA_OPMODE_CHANGED.
|
||||
*
|
||||
* @NL80211_ATTR_TXQ_STATS: TXQ statistics (nested attribute, see &enum
|
||||
* nl80211_txq_stats)
|
||||
* @NL80211_ATTR_TXQ_LIMIT: Total packet limit for the TXQ queues for this phy.
|
||||
* The smaller of this and the memory limit is enforced.
|
||||
* @NL80211_ATTR_TXQ_MEMORY_LIMIT: Total memory memory limit (in bytes) for the
|
||||
* TXQ queues for this phy. The smaller of this and the packet limit is
|
||||
* enforced.
|
||||
* @NL80211_ATTR_TXQ_QUANTUM: TXQ scheduler quantum (bytes). Number of bytes
|
||||
* a flow is assigned on each round of the DRR scheduler.
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -2660,6 +2670,11 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_CONTROL_PORT_OVER_NL80211,
|
||||
|
||||
NL80211_ATTR_TXQ_STATS,
|
||||
NL80211_ATTR_TXQ_LIMIT,
|
||||
NL80211_ATTR_TXQ_MEMORY_LIMIT,
|
||||
NL80211_ATTR_TXQ_QUANTUM,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -3040,6 +3055,7 @@ enum nl80211_sta_info {
|
||||
* @NL80211_TID_STATS_TX_MSDU_FAILED: number of failed transmitted
|
||||
* MSDUs (u64)
|
||||
* @NL80211_TID_STATS_PAD: attribute used for padding for 64-bit alignment
|
||||
* @NL80211_TID_STATS_TXQ_STATS: TXQ stats (nested attribute)
|
||||
* @NUM_NL80211_TID_STATS: number of attributes here
|
||||
* @NL80211_TID_STATS_MAX: highest numbered attribute here
|
||||
*/
|
||||
@@ -3050,12 +3066,51 @@ enum nl80211_tid_stats {
|
||||
NL80211_TID_STATS_TX_MSDU_RETRIES,
|
||||
NL80211_TID_STATS_TX_MSDU_FAILED,
|
||||
NL80211_TID_STATS_PAD,
|
||||
NL80211_TID_STATS_TXQ_STATS,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_TID_STATS,
|
||||
NL80211_TID_STATS_MAX = NUM_NL80211_TID_STATS - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_txq_stats - per TXQ statistics attributes
|
||||
* @__NL80211_TXQ_STATS_INVALID: attribute number 0 is reserved
|
||||
* @NUM_NL80211_TXQ_STATS: number of attributes here
|
||||
* @NL80211_TXQ_STATS_BACKLOG_BYTES: number of bytes currently backlogged
|
||||
* @NL80211_TXQ_STATS_BACKLOG_PACKETS: number of packets currently
|
||||
* backlogged
|
||||
* @NL80211_TXQ_STATS_FLOWS: total number of new flows seen
|
||||
* @NL80211_TXQ_STATS_DROPS: total number of packet drops
|
||||
* @NL80211_TXQ_STATS_ECN_MARKS: total number of packet ECN marks
|
||||
* @NL80211_TXQ_STATS_OVERLIMIT: number of drops due to queue space overflow
|
||||
* @NL80211_TXQ_STATS_OVERMEMORY: number of drops due to memory limit overflow
|
||||
* (only for per-phy stats)
|
||||
* @NL80211_TXQ_STATS_COLLISIONS: number of hash collisions
|
||||
* @NL80211_TXQ_STATS_TX_BYTES: total number of bytes dequeued from TXQ
|
||||
* @NL80211_TXQ_STATS_TX_PACKETS: total number of packets dequeued from TXQ
|
||||
* @NL80211_TXQ_STATS_MAX_FLOWS: number of flow buckets for PHY
|
||||
* @NL80211_TXQ_STATS_MAX: highest numbered attribute here
|
||||
*/
|
||||
enum nl80211_txq_stats {
|
||||
__NL80211_TXQ_STATS_INVALID,
|
||||
NL80211_TXQ_STATS_BACKLOG_BYTES,
|
||||
NL80211_TXQ_STATS_BACKLOG_PACKETS,
|
||||
NL80211_TXQ_STATS_FLOWS,
|
||||
NL80211_TXQ_STATS_DROPS,
|
||||
NL80211_TXQ_STATS_ECN_MARKS,
|
||||
NL80211_TXQ_STATS_OVERLIMIT,
|
||||
NL80211_TXQ_STATS_OVERMEMORY,
|
||||
NL80211_TXQ_STATS_COLLISIONS,
|
||||
NL80211_TXQ_STATS_TX_BYTES,
|
||||
NL80211_TXQ_STATS_TX_PACKETS,
|
||||
NL80211_TXQ_STATS_MAX_FLOWS,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_TXQ_STATS,
|
||||
NL80211_TXQ_STATS_MAX = NUM_NL80211_TXQ_STATS - 1
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_mpath_flags - nl80211 mesh path flags
|
||||
*
|
||||
@@ -5072,6 +5127,8 @@ enum nl80211_feature_flags {
|
||||
* @NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT: This Driver support data ack
|
||||
* rssi if firmware support, this flag is to intimate about ack rssi
|
||||
* support to nl80211.
|
||||
* @NL80211_EXT_FEATURE_TXQS: Driver supports FQ-CoDel-enabled intermediate
|
||||
* TXQs.
|
||||
*
|
||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||
@@ -5105,6 +5162,7 @@ enum nl80211_ext_feature_index {
|
||||
NL80211_EXT_FEATURE_DFS_OFFLOAD,
|
||||
NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
|
||||
NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT,
|
||||
NL80211_EXT_FEATURE_TXQS,
|
||||
|
||||
/* add new features before the definition below */
|
||||
NUM_NL80211_EXT_FEATURES,
|
||||
|
Reference in New Issue
Block a user