aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/mac80211.h40
-rw-r--r--net/mac80211/sta_info.c1
-rw-r--r--net/mac80211/sta_info.h81
3 files changed, 86 insertions, 36 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 0a5de3ef527a..656442c6b1c3 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -42,7 +42,7 @@
42 * tasklet function. 42 * tasklet function.
43 * 43 *
44 * NOTE: If the driver opts to use the _irqsafe() functions, it may not also 44 * NOTE: If the driver opts to use the _irqsafe() functions, it may not also
45 * use the non-irqsafe functions! 45 * use the non-IRQ-safe functions!
46 */ 46 */
47 47
48/** 48/**
@@ -85,7 +85,7 @@ enum ieee80211_notification_types {
85 * struct ieee80211_ht_bss_info - describing BSS's HT characteristics 85 * struct ieee80211_ht_bss_info - describing BSS's HT characteristics
86 * 86 *
87 * This structure describes most essential parameters needed 87 * This structure describes most essential parameters needed
88 * to describe 802.11n HT characteristics in a BSS 88 * to describe 802.11n HT characteristics in a BSS.
89 * 89 *
90 * @primary_channel: channel number of primery channel 90 * @primary_channel: channel number of primery channel
91 * @bss_cap: 802.11n's general BSS capabilities (e.g. channel width) 91 * @bss_cap: 802.11n's general BSS capabilities (e.g. channel width)
@@ -201,9 +201,9 @@ struct ieee80211_bss_conf {
201}; 201};
202 202
203/** 203/**
204 * enum mac80211_tx_flags - flags to transmission information/status 204 * enum mac80211_tx_control_flags - flags to describe transmission information/status
205 * 205 *
206 * These flags are used with the @flags member of &ieee80211_tx_info 206 * These flags are used with the @flags member of &ieee80211_tx_info.
207 * 207 *
208 * @IEEE80211_TX_CTL_REQ_TX_STATUS: request TX status callback for this frame. 208 * @IEEE80211_TX_CTL_REQ_TX_STATUS: request TX status callback for this frame.
209 * @IEEE80211_TX_CTL_DO_NOT_ENCRYPT: send this frame without encryption; 209 * @IEEE80211_TX_CTL_DO_NOT_ENCRYPT: send this frame without encryption;
@@ -212,11 +212,12 @@ struct ieee80211_bss_conf {
212 * @IEEE80211_TX_CTL_USE_CTS_PROTECT: use CTS protection for the frame (e.g., 212 * @IEEE80211_TX_CTL_USE_CTS_PROTECT: use CTS protection for the frame (e.g.,
213 * for combined 802.11g / 802.11b networks) 213 * for combined 802.11g / 802.11b networks)
214 * @IEEE80211_TX_CTL_NO_ACK: tell the low level not to wait for an ack 214 * @IEEE80211_TX_CTL_NO_ACK: tell the low level not to wait for an ack
215 * @IEEE80211_TX_CTL_RATE_CTRL_PROBE 215 * @IEEE80211_TX_CTL_RATE_CTRL_PROBE: TBD
216 * @IEEE80211_TX_CTL_CLEAR_PS_FILT: clear powersave filter for destination 216 * @IEEE80211_TX_CTL_CLEAR_PS_FILT: clear powersave filter for destination
217 * station 217 * station
218 * @IEEE80211_TX_CTL_REQUEUE: 218 * @IEEE80211_TX_CTL_REQUEUE: TBD
219 * @IEEE80211_TX_CTL_FIRST_FRAGMENT: this is a first fragment of the frame 219 * @IEEE80211_TX_CTL_FIRST_FRAGMENT: this is a first fragment of the frame
220 * @IEEE80211_TX_CTL_SHORT_PREAMBLE: TBD
220 * @IEEE80211_TX_CTL_LONG_RETRY_LIMIT: this frame should be send using the 221 * @IEEE80211_TX_CTL_LONG_RETRY_LIMIT: this frame should be send using the
221 * through set_retry_limit configured long retry value 222 * through set_retry_limit configured long retry value
222 * @IEEE80211_TX_CTL_EAPOL_FRAME: internal to mac80211 223 * @IEEE80211_TX_CTL_EAPOL_FRAME: internal to mac80211
@@ -230,6 +231,7 @@ struct ieee80211_bss_conf {
230 * @IEEE80211_TX_CTL_40_MHZ_WIDTH: send this frame using 40 Mhz channel width 231 * @IEEE80211_TX_CTL_40_MHZ_WIDTH: send this frame using 40 Mhz channel width
231 * @IEEE80211_TX_CTL_DUP_DATA: duplicate data frame on both 20 Mhz channels 232 * @IEEE80211_TX_CTL_DUP_DATA: duplicate data frame on both 20 Mhz channels
232 * @IEEE80211_TX_CTL_SHORT_GI: send this frame using short guard interval 233 * @IEEE80211_TX_CTL_SHORT_GI: send this frame using short guard interval
234 * @IEEE80211_TX_CTL_INJECTED: TBD
233 * @IEEE80211_TX_STAT_TX_FILTERED: The frame was not transmitted 235 * @IEEE80211_TX_STAT_TX_FILTERED: The frame was not transmitted
234 * because the destination STA was in powersave mode. 236 * because the destination STA was in powersave mode.
235 * @IEEE80211_TX_STAT_ACK: Frame was acknowledged 237 * @IEEE80211_TX_STAT_ACK: Frame was acknowledged
@@ -280,6 +282,12 @@ enum mac80211_tx_control_flags {
280 * (3) TX status information - driver tells mac80211 what happened 282 * (3) TX status information - driver tells mac80211 what happened
281 * 283 *
282 * @flags: transmit info flags, defined above 284 * @flags: transmit info flags, defined above
285 * @band: TBD
286 * @tx_rate_idx: TBD
287 * @antenna_sel_tx: TBD
288 * @control: union for control data
289 * @status: union for status data
290 * @driver_data: array of driver_data pointers
283 * @retry_count: number of retries 291 * @retry_count: number of retries
284 * @excessive_retries: set to 1 if the frame was retried many times 292 * @excessive_retries: set to 1 if the frame was retried many times
285 * but not acknowledged 293 * but not acknowledged
@@ -562,8 +570,8 @@ enum ieee80211_key_alg {
562 570
563/** 571/**
564 * enum ieee80211_key_len - key length 572 * enum ieee80211_key_len - key length
565 * @WEP40: WEP 5 byte long key 573 * @LEN_WEP40: WEP 5-byte long key
566 * @WEP104: WEP 13 byte long key 574 * @LEN_WEP104: WEP 13-byte long key
567 */ 575 */
568enum ieee80211_key_len { 576enum ieee80211_key_len {
569 LEN_WEP40 = 5, 577 LEN_WEP40 = 5,
@@ -640,7 +648,7 @@ enum set_key_cmd {
640 * enum sta_notify_cmd - sta notify command 648 * enum sta_notify_cmd - sta notify command
641 * 649 *
642 * Used with the sta_notify() callback in &struct ieee80211_ops, this 650 * Used with the sta_notify() callback in &struct ieee80211_ops, this
643 * indicates addition and removal of a station to station table 651 * indicates addition and removal of a station to station table.
644 * 652 *
645 * @STA_NOTIFY_ADD: a station was added to the station table 653 * @STA_NOTIFY_ADD: a station was added to the station table
646 * @STA_NOTIFY_REMOVE: a station being removed from the station table 654 * @STA_NOTIFY_REMOVE: a station being removed from the station table
@@ -1340,7 +1348,7 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw);
1340 * 1348 *
1341 * This function frees everything that was allocated, including the 1349 * This function frees everything that was allocated, including the
1342 * private data for the driver. You must call ieee80211_unregister_hw() 1350 * private data for the driver. You must call ieee80211_unregister_hw()
1343 * before calling this function 1351 * before calling this function.
1344 * 1352 *
1345 * @hw: the hardware to free 1353 * @hw: the hardware to free
1346 */ 1354 */
@@ -1411,7 +1419,7 @@ void ieee80211_tx_status(struct ieee80211_hw *hw,
1411 struct sk_buff *skb); 1419 struct sk_buff *skb);
1412 1420
1413/** 1421/**
1414 * ieee80211_tx_status_irqsafe - irq-safe transmit status callback 1422 * ieee80211_tx_status_irqsafe - IRQ-safe transmit status callback
1415 * 1423 *
1416 * Like ieee80211_tx_status() but can be called in IRQ context 1424 * Like ieee80211_tx_status() but can be called in IRQ context
1417 * (internally defers to a tasklet.) 1425 * (internally defers to a tasklet.)
@@ -1589,6 +1597,8 @@ unsigned int ieee80211_hdrlen(__le16 fc);
1589 * @keyconf: the parameter passed with the set key 1597 * @keyconf: the parameter passed with the set key
1590 * @skb: the skb for which the key is needed 1598 * @skb: the skb for which the key is needed
1591 * @rc4key: a buffer to which the key will be written 1599 * @rc4key: a buffer to which the key will be written
1600 * @type: TBD
1601 * @key: TBD
1592 */ 1602 */
1593void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf, 1603void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf,
1594 struct sk_buff *skb, 1604 struct sk_buff *skb,
@@ -1639,7 +1649,7 @@ void ieee80211_wake_queues(struct ieee80211_hw *hw);
1639void ieee80211_scan_completed(struct ieee80211_hw *hw); 1649void ieee80211_scan_completed(struct ieee80211_hw *hw);
1640 1650
1641/** 1651/**
1642 * ieee80211_iterate_active_interfaces- iterate active interfaces 1652 * ieee80211_iterate_active_interfaces - iterate active interfaces
1643 * 1653 *
1644 * This function iterates over the interfaces associated with a given 1654 * This function iterates over the interfaces associated with a given
1645 * hardware that are currently active and calls the callback for them. 1655 * hardware that are currently active and calls the callback for them.
@@ -1706,7 +1716,7 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid);
1706 * 1716 *
1707 * This function must be called by low level driver once it has 1717 * This function must be called by low level driver once it has
1708 * finished with preparations for the BA session. 1718 * finished with preparations for the BA session.
1709 * This version of the function is irq safe. 1719 * This version of the function is IRQ-safe.
1710 */ 1720 */
1711void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, 1721void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra,
1712 u16 tid); 1722 u16 tid);
@@ -1746,7 +1756,7 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid);
1746 * 1756 *
1747 * This function must be called by low level driver once it has 1757 * This function must be called by low level driver once it has
1748 * finished with preparations for the BA session tear down. 1758 * finished with preparations for the BA session tear down.
1749 * This version of the function is irq safe. 1759 * This version of the function is IRQ-safe.
1750 */ 1760 */
1751void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, 1761void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra,
1752 u16 tid); 1762 u16 tid);
@@ -1754,7 +1764,7 @@ void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra,
1754/** 1764/**
1755 * ieee80211_notify_mac - low level driver notification 1765 * ieee80211_notify_mac - low level driver notification
1756 * @hw: pointer as obtained from ieee80211_alloc_hw(). 1766 * @hw: pointer as obtained from ieee80211_alloc_hw().
1757 * @notification_types: enum ieee80211_notification_types 1767 * @notif_type: enum ieee80211_notification_types
1758 * 1768 *
1759 * This function must be called by low level driver to inform mac80211 of 1769 * This function must be called by low level driver to inform mac80211 of
1760 * low level driver status change or force mac80211 to re-assoc for low 1770 * low level driver status change or force mac80211 to re-assoc for low
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index d8a16b7f6a6b..47d2c1bbfcaa 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -135,6 +135,7 @@ struct sta_info *sta_info_get_by_idx(struct ieee80211_local *local, int idx,
135/** 135/**
136 * __sta_info_free - internal STA free helper 136 * __sta_info_free - internal STA free helper
137 * 137 *
138 * @local: pointer to the global information
138 * @sta: STA info to free 139 * @sta: STA info to free
139 * 140 *
140 * This function must undo everything done by sta_info_alloc() 141 * This function must undo everything done by sta_info_alloc()
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h
index fd228c198e31..94311dcfe043 100644
--- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h
@@ -160,11 +160,21 @@ struct sta_ampdu_mlme {
160 * @list: global linked list entry 160 * @list: global linked list entry
161 * @hnext: hash table linked list pointer 161 * @hnext: hash table linked list pointer
162 * @local: pointer to the global information 162 * @local: pointer to the global information
163 * @sdata: TBD
164 * @key: TBD
165 * @rate_ctrl: TBD
166 * @rate_ctrl_priv: TBD
167 * @lock: used for locking all fields that require locking, see comments
168 * in the header file.
169 * @flaglock: spinlock for flags accesses
170 * @ht_info: HT capabilities of this STA
171 * @supp_rates: Bitmap of supported rates (per band)
163 * @addr: MAC address of this STA 172 * @addr: MAC address of this STA
164 * @aid: STA's unique AID (1..2007, 0 = not assigned yet), 173 * @aid: STA's unique AID (1..2007, 0 = not assigned yet),
165 * only used in AP (and IBSS?) mode 174 * only used in AP (and IBSS?) mode
175 * @listen_interval: TBD
176 * @pin_status: TBD
166 * @flags: STA flags, see &enum ieee80211_sta_info_flags 177 * @flags: STA flags, see &enum ieee80211_sta_info_flags
167 * @flaglock: spinlock for flags accesses
168 * @ps_tx_buf: buffer of frames to transmit to this station 178 * @ps_tx_buf: buffer of frames to transmit to this station
169 * when it leaves power saving state 179 * when it leaves power saving state
170 * @tx_filtered: buffer of frames we already tried to transmit 180 * @tx_filtered: buffer of frames we already tried to transmit
@@ -172,10 +182,41 @@ struct sta_ampdu_mlme {
172 * power saving state 182 * power saving state
173 * @rx_packets: Number of MSDUs received from this STA 183 * @rx_packets: Number of MSDUs received from this STA
174 * @rx_bytes: Number of bytes received from this STA 184 * @rx_bytes: Number of bytes received from this STA
175 * @supp_rates: Bitmap of supported rates (per band) 185 * @wep_weak_iv_count: TBD
176 * @ht_info: HT capabilities of this STA 186 * @last_rx: TBD
177 * @lock: used for locking all fields that require locking, see comments 187 * @num_duplicates: number of duplicate frames received from this STA
178 * in the header file. 188 * @rx_fragments: number of received MPDUs
189 * @rx_dropped: number of dropped MPDUs from this STA
190 * @last_signal: signal of last received frame from this STA
191 * @last_qual: qual of last received frame from this STA
192 * @last_noise: noise of last received frame from this STA
193 * @last_seq_ctrl: last received seq/frag number from this STA (per RX queue)
194 * @wme_rx_queue: TBD
195 * @tx_filtered_count: TBD
196 * @tx_retry_failed: TBD
197 * @tx_retry_count: TBD
198 * @tx_num_consecutive_failures: TBD
199 * @tx_num_mpdu_ok: TBD
200 * @tx_num_mpdu_fail: TBD
201 * @fail_avg: moving percentage of failed MSDUs
202 * @tx_packets: number of RX/TX MSDUs
203 * @tx_bytes: TBD
204 * @tx_fragments: number of transmitted MPDUs
205 * @txrate_idx: TBD
206 * @last_txrate_idx: TBD
207 * @wme_tx_queue: TBD
208 * @ampdu_mlme: TBD
209 * @timer_to_tid: identity mapping to ID timers
210 * @tid_to_tx_q: map tid to tx queue
211 * @llid: Local link ID
212 * @plid: Peer link ID
213 * @reason: Cancel reason on PLINK_HOLDING state
214 * @plink_retries: Retries in establishment
215 * @ignore_plink_timer: TBD
216 * @plink_state plink_state: TBD
217 * @plink_timeout: TBD
218 * @plink_timer: TBD
219 * @debugfs: debug filesystem info
179 */ 220 */
180struct sta_info { 221struct sta_info {
181 /* General information, mostly static */ 222 /* General information, mostly static */
@@ -217,14 +258,12 @@ struct sta_info {
217 unsigned long rx_packets, rx_bytes; 258 unsigned long rx_packets, rx_bytes;
218 unsigned long wep_weak_iv_count; 259 unsigned long wep_weak_iv_count;
219 unsigned long last_rx; 260 unsigned long last_rx;
220 unsigned long num_duplicates; /* number of duplicate frames received 261 unsigned long num_duplicates;
221 * from this STA */ 262 unsigned long rx_fragments;
222 unsigned long rx_fragments; /* number of received MPDUs */ 263 unsigned long rx_dropped;
223 unsigned long rx_dropped; /* number of dropped MPDUs from this STA */ 264 int last_signal;
224 int last_signal; /* signal of last received frame from this STA */ 265 int last_qual;
225 int last_qual; /* qual of last received frame from this STA */ 266 int last_noise;
226 int last_noise; /* noise of last received frame from this STA */
227 /* last received seq/frag number from this STA (per RX queue) */
228 __le16 last_seq_ctrl[NUM_RX_DATA_QUEUES]; 267 __le16 last_seq_ctrl[NUM_RX_DATA_QUEUES];
229#ifdef CONFIG_MAC80211_DEBUG_COUNTERS 268#ifdef CONFIG_MAC80211_DEBUG_COUNTERS
230 unsigned int wme_rx_queue[NUM_RX_DATA_QUEUES]; 269 unsigned int wme_rx_queue[NUM_RX_DATA_QUEUES];
@@ -241,9 +280,9 @@ struct sta_info {
241 unsigned int fail_avg; 280 unsigned int fail_avg;
242 281
243 /* Updated from TX path only, no locking requirements */ 282 /* Updated from TX path only, no locking requirements */
244 unsigned long tx_packets; /* number of RX/TX MSDUs */ 283 unsigned long tx_packets;
245 unsigned long tx_bytes; 284 unsigned long tx_bytes;
246 unsigned long tx_fragments; /* number of transmitted MPDUs */ 285 unsigned long tx_fragments;
247 int txrate_idx; 286 int txrate_idx;
248 int last_txrate_idx; 287 int last_txrate_idx;
249#ifdef CONFIG_MAC80211_DEBUG_COUNTERS 288#ifdef CONFIG_MAC80211_DEBUG_COUNTERS
@@ -254,18 +293,18 @@ struct sta_info {
254 * Aggregation information, locked with lock. 293 * Aggregation information, locked with lock.
255 */ 294 */
256 struct sta_ampdu_mlme ampdu_mlme; 295 struct sta_ampdu_mlme ampdu_mlme;
257 u8 timer_to_tid[STA_TID_NUM]; /* identity mapping to ID timers */ 296 u8 timer_to_tid[STA_TID_NUM];
258 u8 tid_to_tx_q[STA_TID_NUM]; /* map tid to tx queue */ 297 u8 tid_to_tx_q[STA_TID_NUM];
259 298
260#ifdef CONFIG_MAC80211_MESH 299#ifdef CONFIG_MAC80211_MESH
261 /* 300 /*
262 * Mesh peer link attributes 301 * Mesh peer link attributes
263 * TODO: move to a sub-structure that is referenced with pointer? 302 * TODO: move to a sub-structure that is referenced with pointer?
264 */ 303 */
265 __le16 llid; /* Local link ID */ 304 __le16 llid;
266 __le16 plid; /* Peer link ID */ 305 __le16 plid;
267 __le16 reason; /* Cancel reason on PLINK_HOLDING state */ 306 __le16 reason;
268 u8 plink_retries; /* Retries in establishment */ 307 u8 plink_retries;
269 bool ignore_plink_timer; 308 bool ignore_plink_timer;
270 enum plink_state plink_state; 309 enum plink_state plink_state;
271 u32 plink_timeout; 310 u32 plink_timeout;