}
 
        case NL80211_IFTYPE_P2P_CLIENT:
+               switch (new_iftype) {
+               case NL80211_IFTYPE_ADHOC:
+               case NL80211_IFTYPE_STATION:
+                       return true;
+               case NL80211_IFTYPE_P2P_GO:
+                       return true;
+               case NL80211_IFTYPE_AP:
+                       return adapter->curr_iface_comb.uap_intf !=
+                              adapter->iface_limit.uap_intf;
+               default:
+                       return false;
+               }
+
        case NL80211_IFTYPE_P2P_GO:
                switch (new_iftype) {
                case NL80211_IFTYPE_ADHOC:
                case NL80211_IFTYPE_STATION:
                        return true;
+               case NL80211_IFTYPE_P2P_CLIENT:
+                       return true;
                case NL80211_IFTYPE_AP:
                        return adapter->curr_iface_comb.uap_intf !=
                               adapter->iface_limit.uap_intf;
                }
 
        case NL80211_IFTYPE_P2P_CLIENT:
+               if (mwifiex_cfg80211_deinit_p2p(priv))
+                       return -EFAULT;
+
+               switch (type) {
+               case NL80211_IFTYPE_ADHOC:
+               case NL80211_IFTYPE_STATION:
+                       return mwifiex_change_vif_to_sta_adhoc(dev, curr_iftype,
+                                                              type, params);
+               case NL80211_IFTYPE_P2P_GO:
+                       return mwifiex_change_vif_to_p2p(dev, curr_iftype,
+                                                        type, params);
+               case NL80211_IFTYPE_AP:
+                       return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
+                                                       params);
+               default:
+                       goto errnotsupp;
+               }
+
        case NL80211_IFTYPE_P2P_GO:
                if (mwifiex_cfg80211_deinit_p2p(priv))
                        return -EFAULT;
                case NL80211_IFTYPE_STATION:
                        return mwifiex_change_vif_to_sta_adhoc(dev, curr_iftype,
                                                               type, params);
+               case NL80211_IFTYPE_P2P_CLIENT:
+                       return mwifiex_change_vif_to_p2p(dev, curr_iftype,
+                                                        type, params);
                case NL80211_IFTYPE_AP:
                        return mwifiex_change_vif_to_ap(dev, curr_iftype, type,
                                                        params);