aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-04-30 12:51:21 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-07 15:02:26 -0400
commite100bb64bf7cdeae7f742a65ee1985649a7fd1b4 (patch)
tree87ed4147c4dc583aba7c27b0717febb6fabdc76a /include/net/mac80211.h
parent36fc6757fe711def63ea3686bf6ed475d714e114 (diff)
mac80211: QoS related cleanups
This * makes the queue number passed to drivers a u16 (as it will be with skb_get_queue_mapping) * removes the useless queue number defines * splits hw->queues into hw->queues/ampdu_queues * removes the debugfs files for per-queue counters * removes some dead QoS code * removes the beacon queue configuration for IBSS so that the drivers now never get a queue number bigger than (hw->queues + hw->ampdu_queues - 1) for tx and only in the range 0..hw->queues-1 for conf_tx. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h66
1 files changed, 24 insertions, 42 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index ef701d6fd66a..75a34609eed7 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -98,6 +98,18 @@ struct ieee80211_ht_bss_info {
98}; 98};
99 99
100/** 100/**
101 * enum ieee80211_max_queues - maximum number of queues
102 *
103 * @IEEE80211_MAX_QUEUES: Maximum number of regular device queues.
104 * @IEEE80211_MAX_AMPDU_QUEUES: Maximum number of queues usable
105 * for A-MPDU operation.
106 */
107enum ieee80211_max_queues {
108 IEEE80211_MAX_QUEUES = 16,
109 IEEE80211_MAX_AMPDU_QUEUES = 16,
110};
111
112/**
101 * struct ieee80211_tx_queue_params - transmit queue configuration 113 * struct ieee80211_tx_queue_params - transmit queue configuration
102 * 114 *
103 * The information provided in this structure is required for QoS 115 * The information provided in this structure is required for QoS
@@ -129,42 +141,6 @@ struct ieee80211_tx_queue_stats {
129 unsigned int count; 141 unsigned int count;
130}; 142};
131 143
132/**
133 * enum ieee80211_tx_queue - transmit queue number
134 *
135 * These constants are used with some callbacks that take a
136 * queue number to set parameters for a queue.
137 *
138 * @IEEE80211_TX_QUEUE_DATA0: data queue 0
139 * @IEEE80211_TX_QUEUE_DATA1: data queue 1
140 * @IEEE80211_TX_QUEUE_DATA2: data queue 2
141 * @IEEE80211_TX_QUEUE_DATA3: data queue 3
142 * @IEEE80211_TX_QUEUE_DATA4: data queue 4
143 * @IEEE80211_TX_QUEUE_SVP: ??
144 * @NUM_TX_DATA_QUEUES: number of data queues
145 * @IEEE80211_TX_QUEUE_AFTER_BEACON: transmit queue for frames to be
146 * sent after a beacon
147 * @IEEE80211_TX_QUEUE_BEACON: transmit queue for beacon frames
148 * @NUM_TX_DATA_QUEUES_AMPDU: adding more queues for A-MPDU
149 */
150enum ieee80211_tx_queue {
151 IEEE80211_TX_QUEUE_DATA0,
152 IEEE80211_TX_QUEUE_DATA1,
153 IEEE80211_TX_QUEUE_DATA2,
154 IEEE80211_TX_QUEUE_DATA3,
155 IEEE80211_TX_QUEUE_DATA4,
156 IEEE80211_TX_QUEUE_SVP,
157
158 NUM_TX_DATA_QUEUES,
159
160/* due to stupidity in the sub-ioctl userspace interface, the items in
161 * this struct need to have fixed values. As soon as it is removed, we can
162 * fix these entries. */
163 IEEE80211_TX_QUEUE_AFTER_BEACON = 6,
164 IEEE80211_TX_QUEUE_BEACON = 7,
165 NUM_TX_DATA_QUEUES_AMPDU = 16
166};
167
168struct ieee80211_low_level_stats { 144struct ieee80211_low_level_stats {
169 unsigned int dot11ACKFailureCount; 145 unsigned int dot11ACKFailureCount;
170 unsigned int dot11RTSFailureCount; 146 unsigned int dot11RTSFailureCount;
@@ -315,7 +291,7 @@ struct ieee80211_tx_control {
315 * position represents antenna number used */ 291 * position represents antenna number used */
316 u8 icv_len; /* length of the ICV/MIC field in octets */ 292 u8 icv_len; /* length of the ICV/MIC field in octets */
317 u8 iv_len; /* length of the IV field in octets */ 293 u8 iv_len; /* length of the IV field in octets */
318 u8 queue; /* hardware queue to use for this frame; 294 u16 queue; /* hardware queue to use for this frame;
319 * 0 = highest, hw->queues-1 = lowest */ 295 * 0 = highest, hw->queues-1 = lowest */
320 u16 aid; /* Station AID */ 296 u16 aid; /* Station AID */
321 int type; /* internal */ 297 int type; /* internal */
@@ -772,7 +748,14 @@ enum ieee80211_hw_flags {
772 * @max_noise: like @max_rssi, but for the noise value. 748 * @max_noise: like @max_rssi, but for the noise value.
773 * 749 *
774 * @queues: number of available hardware transmit queues for 750 * @queues: number of available hardware transmit queues for
775 * data packets. WMM/QoS requires at least four. 751 * data packets. WMM/QoS requires at least four, these
752 * queues need to have configurable access parameters.
753 *
754 * @ampdu_queues: number of available hardware transmit queues
755 * for A-MPDU packets, these have no access parameters
756 * because they're used only for A-MPDU frames. Note that
757 * mac80211 will not currently use any of the regular queues
758 * for aggregation.
776 * 759 *
777 * @rate_control_algorithm: rate control algorithm for this hardware. 760 * @rate_control_algorithm: rate control algorithm for this hardware.
778 * If unset (NULL), the default algorithm will be used. Must be 761 * If unset (NULL), the default algorithm will be used. Must be
@@ -791,7 +774,7 @@ struct ieee80211_hw {
791 unsigned int extra_tx_headroom; 774 unsigned int extra_tx_headroom;
792 int channel_change_time; 775 int channel_change_time;
793 int vif_data_size; 776 int vif_data_size;
794 u8 queues; 777 u16 queues, ampdu_queues;
795 s8 max_rssi; 778 s8 max_rssi;
796 s8 max_signal; 779 s8 max_signal;
797 s8 max_noise; 780 s8 max_noise;
@@ -1069,8 +1052,7 @@ enum ieee80211_ampdu_mlme_action {
1069 * of assocaited station or AP. 1052 * of assocaited station or AP.
1070 * 1053 *
1071 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), 1054 * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max),
1072 * bursting) for a hardware TX queue. The @queue parameter uses the 1055 * bursting) for a hardware TX queue. Must be atomic.
1073 * %IEEE80211_TX_QUEUE_* constants. Must be atomic.
1074 * 1056 *
1075 * @get_tx_stats: Get statistics of the current TX queue status. This is used 1057 * @get_tx_stats: Get statistics of the current TX queue status. This is used
1076 * to get number of currently queued packets (queue length), maximum queue 1058 * to get number of currently queued packets (queue length), maximum queue
@@ -1150,7 +1132,7 @@ struct ieee80211_ops {
1150 u32 short_retry, u32 long_retr); 1132 u32 short_retry, u32 long_retr);
1151 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1133 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1152 enum sta_notify_cmd, const u8 *addr); 1134 enum sta_notify_cmd, const u8 *addr);
1153 int (*conf_tx)(struct ieee80211_hw *hw, int queue, 1135 int (*conf_tx)(struct ieee80211_hw *hw, u16 queue,
1154 const struct ieee80211_tx_queue_params *params); 1136 const struct ieee80211_tx_queue_params *params);
1155 int (*get_tx_stats)(struct ieee80211_hw *hw, 1137 int (*get_tx_stats)(struct ieee80211_hw *hw,
1156 struct ieee80211_tx_queue_stats *stats); 1138 struct ieee80211_tx_queue_stats *stats);