diff --git a/net/wireless/core.c b/net/wireless/core.c
index ddd32afa5f0a8e1ba6c00dcddc535b5e7b2f9e30..c65f59c952c9a0f6e34aa870fded27c873d194f9 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -810,6 +810,9 @@ static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
 		case NL80211_IFTYPE_MESH_POINT:
 			cfg80211_leave_mesh(rdev, dev);
 			break;
+		case NL80211_IFTYPE_AP:
+			cfg80211_stop_ap(rdev, dev);
+			break;
 		default:
 			break;
 		}
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 316cfd00914fe8df7d6510b13aeaf4165a9d6d88..fc948d0a53f3973c93ad9d3a7c0ad06e9cab21bd 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -814,6 +814,9 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
 		dev->ieee80211_ptr->mesh_id_up_len = 0;
 
 		switch (otype) {
+		case NL80211_IFTYPE_AP:
+			cfg80211_stop_ap(rdev, dev);
+			break;
 		case NL80211_IFTYPE_ADHOC:
 			cfg80211_leave_ibss(rdev, dev, false);
 			break;