diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-10-19 15:44:42 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-10-26 12:57:06 +0200 |
commit | 1041638f2bba0f1de75e66086d50fb1251d64dcf (patch) | |
tree | 95d5ea3a83302d27887dcdc2d425682216937f3f /include/net | |
parent | 7b20b8e8d70a0f4f18c254b42e5b157f93731e9f (diff) | |
download | linux-1041638f2bba0f1de75e66086d50fb1251d64dcf.tar.gz linux-1041638f2bba0f1de75e66086d50fb1251d64dcf.tar.bz2 linux-1041638f2bba0f1de75e66086d50fb1251d64dcf.zip |
mac80211: add explicit AP/GO driver operations
Depending on the driver, a lot of setup may be
necessary to start operating as an AP, some of
which may fail. Add an explicit AP start driver
method to make such failures easier to handle,
and add an AP stop driver method for symmetry.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/mac80211.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 00b7204708bd..5f5327452c9a 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -2381,6 +2381,13 @@ enum ieee80211_rate_control_changed { * to vif. Possible use is for hw queue remapping. * @unassign_vif_chanctx: Notifies device driver about channel context being * unbound from vif. + * @start_ap: Start operation on the AP interface, this is called after all the + * information in bss_conf is set and beacon can be retrieved. A channel + * context is bound before this is called. Note that if the driver uses + * software scan or ROC, this (and @stop_ap) isn't called when the AP is + * just "paused" for scanning/ROC, which is indicated by the beacon being + * disabled/enabled via @bss_info_changed. + * @stop_ap: Stop operation on the AP interface. */ struct ieee80211_ops { void (*tx)(struct ieee80211_hw *hw, @@ -2406,6 +2413,9 @@ struct ieee80211_ops { struct ieee80211_bss_conf *info, u32 changed); + int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); + void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif); + u64 (*prepare_multicast)(struct ieee80211_hw *hw, struct netdev_hw_addr_list *mc_list); void (*configure_filter)(struct ieee80211_hw *hw, |