diff options
-rw-r--r-- | include/net/mac80211.h | 40 | ||||
-rw-r--r-- | net/mac80211/sta_info.c | 1 | ||||
-rw-r--r-- | net/mac80211/sta_info.h | 81 |
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 | */ |
568 | enum ieee80211_key_len { | 576 | enum 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 | */ |
1593 | void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf, | 1603 | void 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); | |||
1639 | void ieee80211_scan_completed(struct ieee80211_hw *hw); | 1649 | void 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 | */ |
1711 | void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, | 1721 | void 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 | */ |
1751 | void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, | 1761 | void 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 | */ |
180 | struct sta_info { | 221 | struct 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; |