aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-12-18 11:20:47 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-01-05 16:07:12 -0500
commit21f83589644bb2ed98079bf1e2154c8e70ca6a6c (patch)
treeede391a8c788a43f7c4ea3baa3367e020d45f179 /include/net
parentc96e96354a6c9456cdf1f150eca504e2ea35301e (diff)
mac80211: implement hardware offload for remain-on-channel
This allows drivers to support remain-on-channel offload if they implement smarter timing or need to use a device implementation like iwlwifi. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mac80211.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 479c35e160e3..5b3fd5add7a4 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -365,6 +365,7 @@ enum mac80211_tx_control_flags {
365 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), 365 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21),
366 IEEE80211_TX_CTL_LDPC = BIT(22), 366 IEEE80211_TX_CTL_LDPC = BIT(22),
367 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24), 367 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24),
368 IEEE80211_TX_CTL_TX_OFFCHAN = BIT(25),
368}; 369};
369 370
370#define IEEE80211_TX_CTL_STBC_SHIFT 23 371#define IEEE80211_TX_CTL_STBC_SHIFT 23
@@ -1824,6 +1825,12 @@ struct ieee80211_ops {
1824 int (*napi_poll)(struct ieee80211_hw *hw, int budget); 1825 int (*napi_poll)(struct ieee80211_hw *hw, int budget);
1825 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant); 1826 int (*set_antenna)(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant);
1826 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant); 1827 int (*get_antenna)(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant);
1828
1829 int (*remain_on_channel)(struct ieee80211_hw *hw,
1830 struct ieee80211_channel *chan,
1831 enum nl80211_channel_type channel_type,
1832 int duration);
1833 int (*cancel_remain_on_channel)(struct ieee80211_hw *hw);
1827}; 1834};
1828 1835
1829/** 1836/**
@@ -2729,6 +2736,18 @@ void ieee80211_request_smps(struct ieee80211_vif *vif,
2729 */ 2736 */
2730void ieee80211_key_removed(struct ieee80211_key_conf *key_conf); 2737void ieee80211_key_removed(struct ieee80211_key_conf *key_conf);
2731 2738
2739/**
2740 * ieee80211_ready_on_channel - notification of remain-on-channel start
2741 * @hw: pointer as obtained from ieee80211_alloc_hw()
2742 */
2743void ieee80211_ready_on_channel(struct ieee80211_hw *hw);
2744
2745/**
2746 * ieee80211_remain_on_channel_expired - remain_on_channel duration expired
2747 * @hw: pointer as obtained from ieee80211_alloc_hw()
2748 */
2749void ieee80211_remain_on_channel_expired(struct ieee80211_hw *hw);
2750
2732/* Rate control API */ 2751/* Rate control API */
2733 2752
2734/** 2753/**