From cf8be8db9b9c3926ad65cf98da3c4678f9a02e53 Mon Sep 17 00:00:00 2001 From: Sameer Thalappil Date: Fri, 5 Jul 2013 14:58:32 -0700 Subject: [PATCH] ANDROID: GKI: cfg80211: Add AP stopped interface AP stopped interface can be used to indicate that the AP mode has stopped functioning, WLAN driver may have encountered errors that has forced the driver to stop the AP mode. When the driver is in P2P-Go mode, and when it goes thru automatic recovery from firmware crashes, it uses this interface to notify the userspace that the group has been deleted. CRs-Fixed: 1078172 Bug: 150894598 Test: make Signed-off-by: Sameer Thalappil Change-Id: Id566b35cd0afdb7277fbd2aef74601bfabc65e42 (cherry picked from commit 44643035d7f5d74edebac551928a7b03fe76f19c) Signed-off-by: Hridya Valsaraju --- include/net/cfg80211.h | 7 +++++++ net/wireless/nl80211.c | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index ae936cd5567e..3db7777cf16c 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h @@ -6398,6 +6398,13 @@ void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev, */ void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp); +/** + * cfg80211_ap_stopped - notify userspace that AP mode stopped + * @netdev: network device + * @gfp: context flags + */ +void cfg80211_ap_stopped(struct net_device *netdev, gfp_t gfp); + /** * ieee80211_get_num_supported_channels - get number of channels device has * @wiphy: the wiphy diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index dfde06b8d25d..fdcab3ceae2d 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -16068,6 +16068,16 @@ void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp) } EXPORT_SYMBOL(cfg80211_crit_proto_stopped); +void cfg80211_ap_stopped(struct net_device *netdev, gfp_t gfp) +{ + struct wireless_dev *wdev = netdev->ieee80211_ptr; + struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy); + + nl80211_send_mlme_event(rdev, netdev, NULL, 0, + NL80211_CMD_STOP_AP, gfp, -1); +} +EXPORT_SYMBOL(cfg80211_ap_stopped); + void nl80211_send_ap_stopped(struct wireless_dev *wdev) { struct wiphy *wiphy = wdev->wiphy;