aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2012-06-26 08:37:17 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-10-16 14:22:42 -0400
commitc3645eac479d9aaac9f8099c94bf681dc695dd34 (patch)
treef701eb4d7b3449d9f4672590f752081ea92f2009 /include/net
parentd01a1e658606a0a69100f49c2ef09aacaf74d3e7 (diff)
mac80211: introduce new ieee80211_ops
Introduce channel context driver methods. The channel on a context channel is immutable, but the channel type and other properties can change. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/mac80211.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index ab1b5bafb568..d9d2119f0828 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2353,6 +2353,16 @@ enum ieee80211_rate_control_changed {
2353 * The callback will be called before each transmission and upon return 2353 * The callback will be called before each transmission and upon return
2354 * mac80211 will transmit the frame right away. 2354 * mac80211 will transmit the frame right away.
2355 * The callback is optional and can (should!) sleep. 2355 * The callback is optional and can (should!) sleep.
2356 *
2357 * @add_chanctx: Notifies device driver about new channel context creation.
2358 * @remove_chanctx: Notifies device driver about channel context destruction.
2359 * @change_chanctx: Notifies device driver about channel context changes that
2360 * may happen when combining different virtual interfaces on the same
2361 * channel context with different settings
2362 * @assign_vif_chanctx: Notifies device driver about channel context being bound
2363 * to vif. Possible use is for hw queue remapping.
2364 * @unassign_vif_chanctx: Notifies device driver about channel context being
2365 * unbound from vif.
2356 */ 2366 */
2357struct ieee80211_ops { 2367struct ieee80211_ops {
2358 void (*tx)(struct ieee80211_hw *hw, 2368 void (*tx)(struct ieee80211_hw *hw,
@@ -2497,6 +2507,20 @@ struct ieee80211_ops {
2497 2507
2498 void (*mgd_prepare_tx)(struct ieee80211_hw *hw, 2508 void (*mgd_prepare_tx)(struct ieee80211_hw *hw,
2499 struct ieee80211_vif *vif); 2509 struct ieee80211_vif *vif);
2510
2511 int (*add_chanctx)(struct ieee80211_hw *hw,
2512 struct ieee80211_chanctx_conf *ctx);
2513 void (*remove_chanctx)(struct ieee80211_hw *hw,
2514 struct ieee80211_chanctx_conf *ctx);
2515 void (*change_chanctx)(struct ieee80211_hw *hw,
2516 struct ieee80211_chanctx_conf *ctx,
2517 u32 changed);
2518 int (*assign_vif_chanctx)(struct ieee80211_hw *hw,
2519 struct ieee80211_vif *vif,
2520 struct ieee80211_chanctx_conf *ctx);
2521 void (*unassign_vif_chanctx)(struct ieee80211_hw *hw,
2522 struct ieee80211_vif *vif,
2523 struct ieee80211_chanctx_conf *ctx);
2500}; 2524};
2501 2525
2502/** 2526/**