break;
        case NL80211_IFTYPE_P2P_CLIENT:
        case NL80211_IFTYPE_P2P_GO:
+               if (mwifiex_cfg80211_deinit_p2p(priv))
+                       return -EFAULT;
+
                switch (type) {
-               case NL80211_IFTYPE_STATION:
-                       if (mwifiex_cfg80211_deinit_p2p(priv))
-                               return -EFAULT;
-                       priv->adapter->curr_iface_comb.p2p_intf--;
-                       priv->adapter->curr_iface_comb.sta_intf++;
-                       dev->ieee80211_ptr->iftype = type;
-                       if (mwifiex_deinit_priv_params(priv))
-                               return -1;
-                       if (mwifiex_init_new_priv_params(priv, dev, type))
-                               return -1;
-                       if (mwifiex_sta_init_cmd(priv, false, false))
-                               return -1;
-                       break;
                case NL80211_IFTYPE_ADHOC:
-                       if (mwifiex_cfg80211_deinit_p2p(priv))
-                               return -EFAULT;
+               case NL80211_IFTYPE_STATION:
                        return mwifiex_change_vif_to_sta_adhoc(dev, curr_iftype,
                                                               type, params);
-                       break;
                case NL80211_IFTYPE_AP:
-                       if (mwifiex_cfg80211_deinit_p2p(priv))
-                               return -EFAULT;
                        return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
                                                        params);
                case NL80211_IFTYPE_UNSPECIFIED: