diff options
author | Ilan Peer <ilan.peer@intel.com> | 2013-02-12 02:34:13 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-03-06 10:35:49 -0500 |
commit | d339d5ca8eee34f3c70386cf2545edc53e546a13 (patch) | |
tree | 30587aa1e41343adcf10b0716e54964410d86edf /include/net | |
parent | f62fab735e99af2190eba03f565adaca5c002882 (diff) |
mac80211: Allow drivers to differentiate between ROC types
Some devices can handle remain on channel requests differently
based on the request type/priority. Add support to
differentiate between different ROC types, i.e., indicate that
the ROC is required for sending managment frames.
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/mac80211.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index f7eba1300d82..9b0d342c0675 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -2135,6 +2135,24 @@ enum ieee80211_rate_control_changed { | |||
2135 | }; | 2135 | }; |
2136 | 2136 | ||
2137 | /** | 2137 | /** |
2138 | * enum ieee80211_roc_type - remain on channel type | ||
2139 | * | ||
2140 | * With the support for multi channel contexts and multi channel operations, | ||
2141 | * remain on channel operations might be limited/deferred/aborted by other | ||
2142 | * flows/operations which have higher priority (and vise versa). | ||
2143 | * Specifying the ROC type can be used by devices to prioritize the ROC | ||
2144 | * operations compared to other operations/flows. | ||
2145 | * | ||
2146 | * @IEEE80211_ROC_TYPE_NORMAL: There are no special requirements for this ROC. | ||
2147 | * @IEEE80211_ROC_TYPE_MGMT_TX: The remain on channel request is required | ||
2148 | * for sending managment frames offchannel. | ||
2149 | */ | ||
2150 | enum ieee80211_roc_type { | ||
2151 | IEEE80211_ROC_TYPE_NORMAL = 0, | ||
2152 | IEEE80211_ROC_TYPE_MGMT_TX, | ||
2153 | }; | ||
2154 | |||
2155 | /** | ||
2138 | * struct ieee80211_ops - callbacks from mac80211 to the driver | 2156 | * struct ieee80211_ops - callbacks from mac80211 to the driver |
2139 | * | 2157 | * |
2140 | * This structure contains various callbacks that the driver may | 2158 | * This structure contains various callbacks that the driver may |
@@ -2687,7 +2705,8 @@ struct ieee80211_ops { | |||
2687 | int (*remain_on_channel)(struct ieee80211_hw *hw, | 2705 | int (*remain_on_channel)(struct ieee80211_hw *hw, |
2688 | struct ieee80211_vif *vif, | 2706 | struct ieee80211_vif *vif, |
2689 | struct ieee80211_channel *chan, | 2707 | struct ieee80211_channel *chan, |
2690 | int duration); | 2708 | int duration, |
2709 | enum ieee80211_roc_type type); | ||
2691 | int (*cancel_remain_on_channel)(struct ieee80211_hw *hw); | 2710 | int (*cancel_remain_on_channel)(struct ieee80211_hw *hw); |
2692 | int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx); | 2711 | int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx); |
2693 | void (*get_ringparam)(struct ieee80211_hw *hw, | 2712 | void (*get_ringparam)(struct ieee80211_hw *hw, |