diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-12-18 11:20:47 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-01-05 16:07:12 -0500 |
commit | 21f83589644bb2ed98079bf1e2154c8e70ca6a6c (patch) | |
tree | ede391a8c788a43f7c4ea3baa3367e020d45f179 /include/net | |
parent | c96e96354a6c9456cdf1f150eca504e2ea35301e (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.h | 19 |
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 | */ |
2730 | void ieee80211_key_removed(struct ieee80211_key_conf *key_conf); | 2737 | void 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 | */ | ||
2743 | void 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 | */ | ||
2749 | void ieee80211_remain_on_channel_expired(struct ieee80211_hw *hw); | ||
2750 | |||
2732 | /* Rate control API */ | 2751 | /* Rate control API */ |
2733 | 2752 | ||
2734 | /** | 2753 | /** |