diff --git a/src/com/android/settings/wifi/WifiApDialog.java b/src/com/android/settings/wifi/WifiApDialog.java
index 6f2d15f..b7ca4fc 100644
--- a/src/com/android/settings/wifi/WifiApDialog.java
+++ b/src/com/android/settings/wifi/WifiApDialog.java
@@ -72,7 +72,13 @@
 
         WifiConfiguration config = new WifiConfiguration();
 
-        config.SSID = AccessPoint.convertToQuotedString(mSsid.getText().toString());
+        /**
+         * TODO: SSID in WifiConfiguration for soft ap
+         * is being stored as a raw string without quotes.
+         * This is not the case on the client side. We need to
+         * make things consistent and clean it up
+         */
+        config.SSID = mSsid.getText().toString().replaceAll("\"","");
 
         switch (mSecurityType) {
             case AccessPoint.SECURITY_NONE:
@@ -115,7 +121,7 @@
         context.getString(R.string.wifi_cancel), mListener);
 
         if (mWifiConfig != null) {
-            mSsid.setText(AccessPoint.removeDoubleQuotes(mWifiConfig.SSID));
+            mSsid.setText(mWifiConfig.SSID);
             switch (mSecurityType) {
               case AccessPoint.SECURITY_NONE:
                   mSecurity.setSelection(OPEN_INDEX);
diff --git a/src/com/android/settings/wifi/WifiApEnabler.java b/src/com/android/settings/wifi/WifiApEnabler.java
index 8933a5e..e907cf7 100644
--- a/src/com/android/settings/wifi/WifiApEnabler.java
+++ b/src/com/android/settings/wifi/WifiApEnabler.java
@@ -153,8 +153,7 @@
                 com.android.internal.R.string.wifi_tether_configure_ssid_default);
         mCheckBox.setSummary(String.format(
                     mContext.getString(R.string.wifi_tether_enabled_subtext),
-                    (wifiConfig == null) ? s : AccessPoint.removeDoubleQuotes(
-                    wifiConfig.SSID)));
+                    (wifiConfig == null) ? s : wifiConfig.SSID));
     }
 
     private void updateTetherState(Object[] available, Object[] tethered, Object[] errored) {
diff --git a/src/com/android/settings/wifi/WifiApSettings.java b/src/com/android/settings/wifi/WifiApSettings.java
index 71e8343..0815238 100644
--- a/src/com/android/settings/wifi/WifiApSettings.java
+++ b/src/com/android/settings/wifi/WifiApSettings.java
@@ -81,7 +81,7 @@
                                                     s, mSecurityType[OPEN_INDEX]));
         } else {
             mCreateNetwork.setSummary(String.format(getString(CONFIG_SUBTEXT),
-                                      AccessPoint.removeDoubleQuotes(mWifiConfig.SSID),
+                                      mWifiConfig.SSID,
                                       mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
                                       mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
         }
@@ -123,7 +123,7 @@
             if(mWifiConfig != null) {
                 mWifiManager.setWifiApEnabled(mWifiConfig, true);
                 mCreateNetwork.setSummary(String.format(getString(CONFIG_SUBTEXT),
-                            AccessPoint.removeDoubleQuotes(mWifiConfig.SSID),
+                            mWifiConfig.SSID,
                             mWifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
                             mSecurityType[WPA_INDEX] : mSecurityType[OPEN_INDEX]));
                 /**
