wlan: Delete p2p interface while SAP mode
A recent fix I13c7d5230a65d2fb66099de52b79f19ec4072135,
deletes p2p interface that is created during
init. In case of SAP mode, this is causing the total number
of connections to reduce by 1 and thus affects some test
scenarios.
Remove the p2p interface while SAP mode and then restore the same when
SAP exits.
Change-Id: I6a5df12e8beec9237f8db19d675d40a17abc3d7c
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 4bed869..d063740 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -12300,6 +12300,7 @@
hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR( ndev );
hdd_context_t *pHddCtx;
tCsrRoamProfile *pRoamProfile = NULL;
+ hdd_adapter_t *pP2pAdapter = NULL;
eCsrRoamBssType LastBSSType;
hdd_config_t *pConfig = NULL;
eMib_dot11DesiredBssType connectedBssType;
@@ -12464,6 +12465,28 @@
{
wlan_hdd_cancel_existing_remain_on_channel(pAdapter);
}
+ if (NL80211_IFTYPE_AP == type)
+ {
+ /*
+ * As Loading WLAN Driver one interface being created
+ * for p2p device address. This will take one HW STA and
+ * the max number of clients that can connect to softAP
+ * will be reduced by one. so while changing the interface
+ * type to NL80211_IFTYPE_AP (SoftAP) remove p2p0 interface
+ * as it is not required in SoftAP mode.
+ */
+
+ // Get P2P Adapter
+ pP2pAdapter = hdd_get_adapter(pHddCtx,
+ WLAN_HDD_P2P_DEVICE);
+ if (pP2pAdapter)
+ {
+ hdd_stop_adapter(pHddCtx, pP2pAdapter, VOS_TRUE);
+ hdd_deinit_adapter(pHddCtx, pP2pAdapter, TRUE);
+ hdd_close_adapter(pHddCtx, pP2pAdapter, VOS_TRUE);
+ }
+ }
+
//Disable IMPS & BMPS for SAP/GO
if(VOS_STATUS_E_FAILURE ==
hdd_disable_bmps_imps(pHddCtx, WLAN_HDD_P2P_GO))
@@ -12601,7 +12624,19 @@
case NL80211_IFTYPE_P2P_CLIENT:
case NL80211_IFTYPE_ADHOC:
+ if (pAdapter->device_mode == WLAN_HDD_SOFTAP
+ && !hdd_get_adapter(pHddCtx, WLAN_HDD_P2P_DEVICE)) {
+ /*
+ * The p2p interface was deleted while SoftAP mode was init,
+ * create that interface now that the SoftAP is going down.
+ */
+ pP2pAdapter = hdd_open_adapter(pHddCtx, WLAN_HDD_P2P_DEVICE,
+ "p2p%d", wlan_hdd_get_intf_addr(pHddCtx),
+ VOS_TRUE);
+ }
+
hdd_stop_adapter( pHddCtx, pAdapter, VOS_TRUE );
+
#ifdef FEATURE_WLAN_TDLS
/* A Mutex Lock is introduced while changing the mode to