aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/driver-ops.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-08-27 12:35:58 +0200
committerJohn W. Linville <linville@tuxdriver.com>2010-08-27 13:53:31 -0400
commit34d4bc4d41d282a66dafe1b01a7d46bad468cefb (patch)
treeac0936b00f1ebd037be32fd0e5f304f26366e6c0 /net/mac80211/driver-ops.h
parent87490f6db38999fee7f6d3dbecc5b94730c7e010 (diff)
downloadkernel_samsung_smdk4412-34d4bc4d41d282a66dafe1b01a7d46bad468cefb.zip
kernel_samsung_smdk4412-34d4bc4d41d282a66dafe1b01a7d46bad468cefb.tar.gz
kernel_samsung_smdk4412-34d4bc4d41d282a66dafe1b01a7d46bad468cefb.tar.bz2
mac80211: support runtime interface type changes
Add support to mac80211 for changing the interface type even when the interface is UP, if the driver supports it. To achieve this * add a new driver callback for switching, * split some of the interface up/down code out into new functions (do_open/do_stop), and * maintain an own __SDATA_RUNNING bit that will not be set during interface type, so that any other code doesn't use the interface. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/driver-ops.h')
-rw-r--r--net/mac80211/driver-ops.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index 14123dc..6064b7b 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -54,6 +54,20 @@ static inline int drv_add_interface(struct ieee80211_local *local,
return ret;
}
+static inline int drv_change_interface(struct ieee80211_local *local,
+ struct ieee80211_sub_if_data *sdata,
+ enum nl80211_iftype type)
+{
+ int ret;
+
+ might_sleep();
+
+ trace_drv_change_interface(local, sdata, type);
+ ret = local->ops->change_interface(&local->hw, &sdata->vif, type);
+ trace_drv_return_int(local, ret);
+ return ret;
+}
+
static inline void drv_remove_interface(struct ieee80211_local *local,
struct ieee80211_vif *vif)
{