aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2011-05-16 14:55:42 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-05-16 19:32:19 -0400
commite00cf3b9eb7839b952e434a75bff6b99e47337ac (patch)
treeef583ab8ac09bf703026650d4bc7777e6a3864d3 /include/net/mac80211.h
parent1a8218e96271790a07dd7065a2ef173e0f67e328 (diff)
parent3b8ab88acaceb505aa06ef3bbf3a73b92470ae78 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
Conflicts: drivers/net/wireless/iwlwifi/iwl-agn-tx.c net/mac80211/sta_info.h
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index db4b6b9f3977..8c7189c3f6ed 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -537,6 +537,21 @@ struct ieee80211_tx_info {
537 }; 537 };
538}; 538};
539 539
540/**
541 * ieee80211_sched_scan_ies - scheduled scan IEs
542 *
543 * This structure is used to pass the appropriate IEs to be used in scheduled
544 * scans for all bands. It contains both the IEs passed from the userspace
545 * and the ones generated by mac80211.
546 *
547 * @ie: array with the IEs for each supported band
548 * @len: array with the total length of the IEs for each band
549 */
550struct ieee80211_sched_scan_ies {
551 u8 *ie[IEEE80211_NUM_BANDS];
552 size_t len[IEEE80211_NUM_BANDS];
553};
554
540static inline struct ieee80211_tx_info *IEEE80211_SKB_CB(struct sk_buff *skb) 555static inline struct ieee80211_tx_info *IEEE80211_SKB_CB(struct sk_buff *skb)
541{ 556{
542 return (struct ieee80211_tx_info *)skb->cb; 557 return (struct ieee80211_tx_info *)skb->cb;
@@ -1606,6 +1621,18 @@ enum ieee80211_ampdu_mlme_action {
1606 * you should ensure to cancel it on this callback. 1621 * you should ensure to cancel it on this callback.
1607 * Must be implemented and can sleep. 1622 * Must be implemented and can sleep.
1608 * 1623 *
1624 * @suspend: Suspend the device; mac80211 itself will quiesce before and
1625 * stop transmitting and doing any other configuration, and then
1626 * ask the device to suspend. This is only invoked when WoWLAN is
1627 * configured, otherwise the device is deconfigured completely and
1628 * reconfigured at resume time.
1629 *
1630 * @resume: If WoWLAN was configured, this indicates that mac80211 is
1631 * now resuming its operation, after this the device must be fully
1632 * functional again. If this returns an error, the only way out is
1633 * to also unregister the device. If it returns 1, then mac80211
1634 * will also go through the regular complete restart on resume.
1635 *
1609 * @add_interface: Called when a netdevice attached to the hardware is 1636 * @add_interface: Called when a netdevice attached to the hardware is
1610 * enabled. Because it is not called for monitor mode devices, @start 1637 * enabled. Because it is not called for monitor mode devices, @start
1611 * and @stop must be implemented. 1638 * and @stop must be implemented.
@@ -1681,6 +1708,13 @@ enum ieee80211_ampdu_mlme_action {
1681 * any error unless this callback returned a negative error code. 1708 * any error unless this callback returned a negative error code.
1682 * The callback can sleep. 1709 * The callback can sleep.
1683 * 1710 *
1711 * @sched_scan_start: Ask the hardware to start scanning repeatedly at
1712 * specific intervals. The driver must call the
1713 * ieee80211_sched_scan_results() function whenever it finds results.
1714 * This process will continue until sched_scan_stop is called.
1715 *
1716 * @sched_scan_stop: Tell the hardware to stop an ongoing scheduled scan.
1717 *
1684 * @sw_scan_start: Notifier function that is called just before a software scan 1718 * @sw_scan_start: Notifier function that is called just before a software scan
1685 * is started. Can be NULL, if the driver doesn't need this notification. 1719 * is started. Can be NULL, if the driver doesn't need this notification.
1686 * The callback can sleep. 1720 * The callback can sleep.
@@ -1831,6 +1865,10 @@ struct ieee80211_ops {
1831 void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); 1865 void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
1832 int (*start)(struct ieee80211_hw *hw); 1866 int (*start)(struct ieee80211_hw *hw);
1833 void (*stop)(struct ieee80211_hw *hw); 1867 void (*stop)(struct ieee80211_hw *hw);
1868#ifdef CONFIG_PM
1869 int (*suspend)(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan);
1870 int (*resume)(struct ieee80211_hw *hw);
1871#endif
1834 int (*add_interface)(struct ieee80211_hw *hw, 1872 int (*add_interface)(struct ieee80211_hw *hw,
1835 struct ieee80211_vif *vif); 1873 struct ieee80211_vif *vif);
1836 int (*change_interface)(struct ieee80211_hw *hw, 1874 int (*change_interface)(struct ieee80211_hw *hw,
@@ -1861,6 +1899,12 @@ struct ieee80211_ops {
1861 u32 iv32, u16 *phase1key); 1899 u32 iv32, u16 *phase1key);
1862 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1900 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1863 struct cfg80211_scan_request *req); 1901 struct cfg80211_scan_request *req);
1902 int (*sched_scan_start)(struct ieee80211_hw *hw,
1903 struct ieee80211_vif *vif,
1904 struct cfg80211_sched_scan_request *req,
1905 struct ieee80211_sched_scan_ies *ies);
1906 void (*sched_scan_stop)(struct ieee80211_hw *hw,
1907 struct ieee80211_vif *vif);
1864 void (*sw_scan_start)(struct ieee80211_hw *hw); 1908 void (*sw_scan_start)(struct ieee80211_hw *hw);
1865 void (*sw_scan_complete)(struct ieee80211_hw *hw); 1909 void (*sw_scan_complete)(struct ieee80211_hw *hw);
1866 int (*get_stats)(struct ieee80211_hw *hw, 1910 int (*get_stats)(struct ieee80211_hw *hw,
@@ -2578,6 +2622,28 @@ void ieee80211_wake_queues(struct ieee80211_hw *hw);
2578void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted); 2622void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted);
2579 2623
2580/** 2624/**
2625 * ieee80211_sched_scan_results - got results from scheduled scan
2626 *
2627 * When a scheduled scan is running, this function needs to be called by the
2628 * driver whenever there are new scan results available.
2629 *
2630 * @hw: the hardware that is performing scheduled scans
2631 */
2632void ieee80211_sched_scan_results(struct ieee80211_hw *hw);
2633
2634/**
2635 * ieee80211_sched_scan_stopped - inform that the scheduled scan has stopped
2636 *
2637 * When a scheduled scan is running, this function can be called by
2638 * the driver if it needs to stop the scan to perform another task.
2639 * Usual scenarios are drivers that cannot continue the scheduled scan
2640 * while associating, for instance.
2641 *
2642 * @hw: the hardware that is performing scheduled scans
2643 */
2644void ieee80211_sched_scan_stopped(struct ieee80211_hw *hw);
2645
2646/**
2581 * ieee80211_iterate_active_interfaces - iterate active interfaces 2647 * ieee80211_iterate_active_interfaces - iterate active interfaces
2582 * 2648 *
2583 * This function iterates over the interfaces associated with a given 2649 * This function iterates over the interfaces associated with a given