diff options
author | David S. Miller <davem@davemloft.net> | 2010-02-14 20:45:59 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-14 20:45:59 -0500 |
commit | f6f223039c0d0683bdea1eabd35b309e10311a60 (patch) | |
tree | 890e07acf8c18ddc2994ebc0a0bdcdda38b0dcc6 /include/net | |
parent | b3b3f04fb587ecb61b5baa6c1c5f0e666fd12d73 (diff) | |
parent | 42c4568a4ace0adc27a9d6f02936e2047ba6fc7e (diff) |
Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/cfg80211.h | 83 | ||||
-rw-r--r-- | include/net/ieee80211_radiotap.h | 4 | ||||
-rw-r--r-- | include/net/mac80211.h | 49 |
3 files changed, 89 insertions, 47 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index a3f0a7ed31ac..5b3569b2a74c 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1561,37 +1561,82 @@ ieee80211_get_response_rate(struct ieee80211_supported_band *sband, | |||
1561 | * Documentation in Documentation/networking/radiotap-headers.txt | 1561 | * Documentation in Documentation/networking/radiotap-headers.txt |
1562 | */ | 1562 | */ |
1563 | 1563 | ||
1564 | struct radiotap_align_size { | ||
1565 | uint8_t align:4, size:4; | ||
1566 | }; | ||
1567 | |||
1568 | struct ieee80211_radiotap_namespace { | ||
1569 | const struct radiotap_align_size *align_size; | ||
1570 | int n_bits; | ||
1571 | uint32_t oui; | ||
1572 | uint8_t subns; | ||
1573 | }; | ||
1574 | |||
1575 | struct ieee80211_radiotap_vendor_namespaces { | ||
1576 | const struct ieee80211_radiotap_namespace *ns; | ||
1577 | int n_ns; | ||
1578 | }; | ||
1579 | |||
1564 | /** | 1580 | /** |
1565 | * struct ieee80211_radiotap_iterator - tracks walk thru present radiotap args | 1581 | * struct ieee80211_radiotap_iterator - tracks walk thru present radiotap args |
1566 | * @rtheader: pointer to the radiotap header we are walking through | 1582 | * @this_arg_index: index of current arg, valid after each successful call |
1567 | * @max_length: length of radiotap header in cpu byte ordering | 1583 | * to ieee80211_radiotap_iterator_next() |
1568 | * @this_arg_index: IEEE80211_RADIOTAP_... index of current arg | 1584 | * @this_arg: pointer to current radiotap arg; it is valid after each |
1569 | * @this_arg: pointer to current radiotap arg | 1585 | * call to ieee80211_radiotap_iterator_next() but also after |
1570 | * @arg_index: internal next argument index | 1586 | * ieee80211_radiotap_iterator_init() where it will point to |
1571 | * @arg: internal next argument pointer | 1587 | * the beginning of the actual data portion |
1572 | * @next_bitmap: internal pointer to next present u32 | 1588 | * @this_arg_size: length of the current arg, for convenience |
1573 | * @bitmap_shifter: internal shifter for curr u32 bitmap, b0 set == arg present | 1589 | * @current_namespace: pointer to the current namespace definition |
1590 | * (or internally %NULL if the current namespace is unknown) | ||
1591 | * @is_radiotap_ns: indicates whether the current namespace is the default | ||
1592 | * radiotap namespace or not | ||
1593 | * | ||
1594 | * @overrides: override standard radiotap fields | ||
1595 | * @n_overrides: number of overrides | ||
1596 | * | ||
1597 | * @_rtheader: pointer to the radiotap header we are walking through | ||
1598 | * @_max_length: length of radiotap header in cpu byte ordering | ||
1599 | * @_arg_index: next argument index | ||
1600 | * @_arg: next argument pointer | ||
1601 | * @_next_bitmap: internal pointer to next present u32 | ||
1602 | * @_bitmap_shifter: internal shifter for curr u32 bitmap, b0 set == arg present | ||
1603 | * @_vns: vendor namespace definitions | ||
1604 | * @_next_ns_data: beginning of the next namespace's data | ||
1605 | * @_reset_on_ext: internal; reset the arg index to 0 when going to the | ||
1606 | * next bitmap word | ||
1607 | * | ||
1608 | * Describes the radiotap parser state. Fields prefixed with an underscore | ||
1609 | * must not be used by users of the parser, only by the parser internally. | ||
1574 | */ | 1610 | */ |
1575 | 1611 | ||
1576 | struct ieee80211_radiotap_iterator { | 1612 | struct ieee80211_radiotap_iterator { |
1577 | struct ieee80211_radiotap_header *rtheader; | 1613 | struct ieee80211_radiotap_header *_rtheader; |
1578 | int max_length; | 1614 | const struct ieee80211_radiotap_vendor_namespaces *_vns; |
1615 | const struct ieee80211_radiotap_namespace *current_namespace; | ||
1616 | |||
1617 | unsigned char *_arg, *_next_ns_data; | ||
1618 | uint32_t *_next_bitmap; | ||
1619 | |||
1620 | unsigned char *this_arg; | ||
1579 | int this_arg_index; | 1621 | int this_arg_index; |
1580 | u8 *this_arg; | 1622 | int this_arg_size; |
1581 | 1623 | ||
1582 | int arg_index; | 1624 | int is_radiotap_ns; |
1583 | u8 *arg; | 1625 | |
1584 | __le32 *next_bitmap; | 1626 | int _max_length; |
1585 | u32 bitmap_shifter; | 1627 | int _arg_index; |
1628 | uint32_t _bitmap_shifter; | ||
1629 | int _reset_on_ext; | ||
1586 | }; | 1630 | }; |
1587 | 1631 | ||
1588 | extern int ieee80211_radiotap_iterator_init( | 1632 | extern int ieee80211_radiotap_iterator_init( |
1589 | struct ieee80211_radiotap_iterator *iterator, | 1633 | struct ieee80211_radiotap_iterator *iterator, |
1590 | struct ieee80211_radiotap_header *radiotap_header, | 1634 | struct ieee80211_radiotap_header *radiotap_header, |
1591 | int max_length); | 1635 | int max_length, const struct ieee80211_radiotap_vendor_namespaces *vns); |
1592 | 1636 | ||
1593 | extern int ieee80211_radiotap_iterator_next( | 1637 | extern int ieee80211_radiotap_iterator_next( |
1594 | struct ieee80211_radiotap_iterator *iterator); | 1638 | struct ieee80211_radiotap_iterator *iterator); |
1639 | |||
1595 | 1640 | ||
1596 | extern const unsigned char rfc1042_header[6]; | 1641 | extern const unsigned char rfc1042_header[6]; |
1597 | extern const unsigned char bridge_tunnel_header[6]; | 1642 | extern const unsigned char bridge_tunnel_header[6]; |
diff --git a/include/net/ieee80211_radiotap.h b/include/net/ieee80211_radiotap.h index 9d3d86aaccbb..af49f8ab7f81 100644 --- a/include/net/ieee80211_radiotap.h +++ b/include/net/ieee80211_radiotap.h | |||
@@ -198,6 +198,10 @@ enum ieee80211_radiotap_type { | |||
198 | IEEE80211_RADIOTAP_TX_FLAGS = 15, | 198 | IEEE80211_RADIOTAP_TX_FLAGS = 15, |
199 | IEEE80211_RADIOTAP_RTS_RETRIES = 16, | 199 | IEEE80211_RADIOTAP_RTS_RETRIES = 16, |
200 | IEEE80211_RADIOTAP_DATA_RETRIES = 17, | 200 | IEEE80211_RADIOTAP_DATA_RETRIES = 17, |
201 | |||
202 | /* valid in every it_present bitmap, even vendor namespaces */ | ||
203 | IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE = 29, | ||
204 | IEEE80211_RADIOTAP_VENDOR_NAMESPACE = 30, | ||
201 | IEEE80211_RADIOTAP_EXT = 31 | 205 | IEEE80211_RADIOTAP_EXT = 31 |
202 | }; | 206 | }; |
203 | 207 | ||
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 74ccf30fdf8e..314e98173166 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -117,19 +117,6 @@ struct ieee80211_tx_queue_params { | |||
117 | bool uapsd; | 117 | bool uapsd; |
118 | }; | 118 | }; |
119 | 119 | ||
120 | /** | ||
121 | * struct ieee80211_tx_queue_stats - transmit queue statistics | ||
122 | * | ||
123 | * @len: number of packets in queue | ||
124 | * @limit: queue length limit | ||
125 | * @count: number of frames sent | ||
126 | */ | ||
127 | struct ieee80211_tx_queue_stats { | ||
128 | unsigned int len; | ||
129 | unsigned int limit; | ||
130 | unsigned int count; | ||
131 | }; | ||
132 | |||
133 | struct ieee80211_low_level_stats { | 120 | struct ieee80211_low_level_stats { |
134 | unsigned int dot11ACKFailureCount; | 121 | unsigned int dot11ACKFailureCount; |
135 | unsigned int dot11RTSFailureCount; | 122 | unsigned int dot11RTSFailureCount; |
@@ -814,7 +801,7 @@ enum set_key_cmd { | |||
814 | * mac80211, any ieee80211_sta pointer you get access to must | 801 | * mac80211, any ieee80211_sta pointer you get access to must |
815 | * either be protected by rcu_read_lock() explicitly or implicitly, | 802 | * either be protected by rcu_read_lock() explicitly or implicitly, |
816 | * or you must take good care to not use such a pointer after a | 803 | * or you must take good care to not use such a pointer after a |
817 | * call to your sta_notify callback that removed it. | 804 | * call to your sta_remove callback that removed it. |
818 | * | 805 | * |
819 | * @addr: MAC address | 806 | * @addr: MAC address |
820 | * @aid: AID we assigned to the station if we're an AP | 807 | * @aid: AID we assigned to the station if we're an AP |
@@ -840,8 +827,8 @@ struct ieee80211_sta { | |||
840 | * indicates addition and removal of a station to station table, | 827 | * indicates addition and removal of a station to station table, |
841 | * or if a associated station made a power state transition. | 828 | * or if a associated station made a power state transition. |
842 | * | 829 | * |
843 | * @STA_NOTIFY_ADD: a station was added to the station table | 830 | * @STA_NOTIFY_ADD: (DEPRECATED) a station was added to the station table |
844 | * @STA_NOTIFY_REMOVE: a station being removed from the station table | 831 | * @STA_NOTIFY_REMOVE: (DEPRECATED) a station being removed from the station table |
845 | * @STA_NOTIFY_SLEEP: a station is now sleeping | 832 | * @STA_NOTIFY_SLEEP: a station is now sleeping |
846 | * @STA_NOTIFY_AWAKE: a sleeping station woke up | 833 | * @STA_NOTIFY_AWAKE: a sleeping station woke up |
847 | */ | 834 | */ |
@@ -958,6 +945,11 @@ enum ieee80211_tkip_key_type { | |||
958 | * Hardware supports Unscheduled Automatic Power Save Delivery | 945 | * Hardware supports Unscheduled Automatic Power Save Delivery |
959 | * (U-APSD) in managed mode. The mode is configured with | 946 | * (U-APSD) in managed mode. The mode is configured with |
960 | * conf_tx() operation. | 947 | * conf_tx() operation. |
948 | * | ||
949 | * @IEEE80211_HW_REPORTS_TX_ACK_STATUS: | ||
950 | * Hardware can provide ack status reports of Tx frames to | ||
951 | * the stack. | ||
952 | * | ||
961 | */ | 953 | */ |
962 | enum ieee80211_hw_flags { | 954 | enum ieee80211_hw_flags { |
963 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, | 955 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, |
@@ -978,6 +970,7 @@ enum ieee80211_hw_flags { | |||
978 | IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15, | 970 | IEEE80211_HW_SUPPORTS_STATIC_SMPS = 1<<15, |
979 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, | 971 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, |
980 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, | 972 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, |
973 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, | ||
981 | }; | 974 | }; |
982 | 975 | ||
983 | /** | 976 | /** |
@@ -1534,22 +1527,20 @@ enum ieee80211_ampdu_mlme_action { | |||
1534 | * @set_rts_threshold: Configuration of RTS threshold (if device needs it) | 1527 | * @set_rts_threshold: Configuration of RTS threshold (if device needs it) |
1535 | * The callback can sleep. | 1528 | * The callback can sleep. |
1536 | * | 1529 | * |
1537 | * @sta_notify: Notifies low level driver about addition, removal or power | 1530 | * @sta_add: Notifies low level driver about addition of an associated station, |
1538 | * state transition of an associated station, AP, IBSS/WDS/mesh peer etc. | 1531 | * AP, IBSS/WDS/mesh peer etc. This callback can sleep. |
1539 | * Must be atomic. | 1532 | * |
1533 | * @sta_remove: Notifies low level driver about removal of an associated | ||
1534 | * station, AP, IBSS/WDS/mesh peer etc. This callback can sleep. | ||
1535 | * | ||
1536 | * @sta_notify: Notifies low level driver about power state transition of an | ||
1537 | * associated station, AP, IBSS/WDS/mesh peer etc. Must be atomic. | ||
1540 | * | 1538 | * |
1541 | * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), | 1539 | * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), |
1542 | * bursting) for a hardware TX queue. | 1540 | * bursting) for a hardware TX queue. |
1543 | * Returns a negative error code on failure. | 1541 | * Returns a negative error code on failure. |
1544 | * The callback can sleep. | 1542 | * The callback can sleep. |
1545 | * | 1543 | * |
1546 | * @get_tx_stats: Get statistics of the current TX queue status. This is used | ||
1547 | * to get number of currently queued packets (queue length), maximum queue | ||
1548 | * size (limit), and total number of packets sent using each TX queue | ||
1549 | * (count). The 'stats' pointer points to an array that has hw->queues | ||
1550 | * items. | ||
1551 | * The callback must be atomic. | ||
1552 | * | ||
1553 | * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently, | 1544 | * @get_tsf: Get the current TSF timer value from firmware/hardware. Currently, |
1554 | * this is only used for IBSS mode BSSID merging and debugging. Is not a | 1545 | * this is only used for IBSS mode BSSID merging and debugging. Is not a |
1555 | * required function. | 1546 | * required function. |
@@ -1635,12 +1626,14 @@ struct ieee80211_ops { | |||
1635 | void (*get_tkip_seq)(struct ieee80211_hw *hw, u8 hw_key_idx, | 1626 | void (*get_tkip_seq)(struct ieee80211_hw *hw, u8 hw_key_idx, |
1636 | u32 *iv32, u16 *iv16); | 1627 | u32 *iv32, u16 *iv16); |
1637 | int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value); | 1628 | int (*set_rts_threshold)(struct ieee80211_hw *hw, u32 value); |
1629 | int (*sta_add)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | ||
1630 | struct ieee80211_sta *sta); | ||
1631 | int (*sta_remove)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | ||
1632 | struct ieee80211_sta *sta); | ||
1638 | void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 1633 | void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
1639 | enum sta_notify_cmd, struct ieee80211_sta *sta); | 1634 | enum sta_notify_cmd, struct ieee80211_sta *sta); |
1640 | int (*conf_tx)(struct ieee80211_hw *hw, u16 queue, | 1635 | int (*conf_tx)(struct ieee80211_hw *hw, u16 queue, |
1641 | const struct ieee80211_tx_queue_params *params); | 1636 | const struct ieee80211_tx_queue_params *params); |
1642 | int (*get_tx_stats)(struct ieee80211_hw *hw, | ||
1643 | struct ieee80211_tx_queue_stats *stats); | ||
1644 | u64 (*get_tsf)(struct ieee80211_hw *hw); | 1637 | u64 (*get_tsf)(struct ieee80211_hw *hw); |
1645 | void (*set_tsf)(struct ieee80211_hw *hw, u64 tsf); | 1638 | void (*set_tsf)(struct ieee80211_hw *hw, u64 tsf); |
1646 | void (*reset_tsf)(struct ieee80211_hw *hw); | 1639 | void (*reset_tsf)(struct ieee80211_hw *hw); |