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 479c35e160e..5b3fd5add7a 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 | /** |
