aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-02-14 20:45:59 -0500
committerDavid S. Miller <davem@davemloft.net>2010-02-14 20:45:59 -0500
commitf6f223039c0d0683bdea1eabd35b309e10311a60 (patch)
tree890e07acf8c18ddc2994ebc0a0bdcdda38b0dcc6 /include/net
parentb3b3f04fb587ecb61b5baa6c1c5f0e666fd12d73 (diff)
parent42c4568a4ace0adc27a9d6f02936e2047ba6fc7e (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.h83
-rw-r--r--include/net/ieee80211_radiotap.h4
-rw-r--r--include/net/mac80211.h49
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
1564struct radiotap_align_size {
1565 uint8_t align:4, size:4;
1566};
1567
1568struct 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
1575struct 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
1576struct ieee80211_radiotap_iterator { 1612struct 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
1588extern int ieee80211_radiotap_iterator_init( 1632extern 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
1593extern int ieee80211_radiotap_iterator_next( 1637extern int ieee80211_radiotap_iterator_next(
1594 struct ieee80211_radiotap_iterator *iterator); 1638 struct ieee80211_radiotap_iterator *iterator);
1639
1595 1640
1596extern const unsigned char rfc1042_header[6]; 1641extern const unsigned char rfc1042_header[6];
1597extern const unsigned char bridge_tunnel_header[6]; 1642extern 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 */
127struct ieee80211_tx_queue_stats {
128 unsigned int len;
129 unsigned int limit;
130 unsigned int count;
131};
132
133struct ieee80211_low_level_stats { 120struct 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 */
962enum ieee80211_hw_flags { 954enum 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);