diff --git a/qcom/fmradio/FmReceiver.java b/qcom/fmradio/FmReceiver.java
index 0ed41490fbe6b1b106710165eccb1157e465b740..9beecd7d9e61a26ef3b5ac6a68c4dca4ba68cc88 100644
--- a/qcom/fmradio/FmReceiver.java
+++ b/qcom/fmradio/FmReceiver.java
@@ -36,6 +36,10 @@ import android.util.Log;
 import android.os.SystemProperties;
 import java.util.Arrays;
 import java.lang.Runnable;
+import android.content.BroadcastReceiver;
+import android.content.Intent;
+import android.net.wifi.WifiManager;
+import android.content.IntentFilter;
 
 /**
  * This class contains all interfaces and types needed to
@@ -46,9 +50,12 @@ public class FmReceiver extends FmTransceiver
 {
 
    public static int mSearchState = subSrchLevel_NoSearch;
+   private IntentFilter mIntentFilter;
 
    static final int STD_BUF_SIZE = 256;
    static final int GRP_3A = 64;
+   static final int ENABLE_LPF = 1;
+   static final int DISABLE_LPF = 0;
    private static final String TAG = "FMRadio";
 
    private static boolean mEnableLpfGsm = false;
@@ -345,9 +352,9 @@ public class FmReceiver extends FmTransceiver
         public void onDataConnectionStateChanged(int state, int networkType) {
               Log.d (TAG, "state: " + Integer.toString(state) +  " networkType: " + Integer.toString(networkType));
               if (state == TelephonyManager.DATA_CONNECTED) {
-                  FMcontrolLowPassFilter(state, networkType, 1);
+                  FMcontrolLowPassFilter(state, networkType, ENABLE_LPF);
               } else {
-                  FMcontrolLowPassFilter(state, networkType, 0);
+                  FMcontrolLowPassFilter(state, networkType, DISABLE_LPF);
               }
        }
    };
@@ -366,6 +373,29 @@ public class FmReceiver extends FmTransceiver
        tm.listen(mDataConnectionStateListener, PhoneStateListener.LISTEN_NONE);
    }
 
+   private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+
+       @Override
+       public void onReceive(Context context, Intent intent) {
+
+           Log.d (TAG, "onReceive: Wifi State change intent");
+
+           if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {
+               int newState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+                        WifiManager.WIFI_STATE_UNKNOWN);
+               if (newState == WifiManager.WIFI_STATE_ENABLED) {
+                   Log.d (TAG, "enable LPF on wifi enabled " + newState);
+                   mControl.enableLPF(sFd, ENABLE_LPF);
+               } else {
+                   Log.d (TAG, "Disable LPF on wifi state other than enabled " + newState);
+                   mControl.enableLPF(sFd, DISABLE_LPF);
+               }
+           } else {
+               Log.d (TAG, "WIFI_STATE_CHANGED_ACTION failed");
+           }
+       }
+   };
+
    /**
     * Constructor for the receiver Object
     */
@@ -503,6 +533,9 @@ public class FmReceiver extends FmTransceiver
        * If FMRx already on, then return.
       */
       int state = getFMState();
+
+      mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
+
       if (state == FMState_Rx_Turned_On || state == FMState_Srch_InProg) {
          Log.d(TAG, "enable: FM already turned On and running");
          return status;
@@ -529,6 +562,7 @@ public class FmReceiver extends FmTransceiver
           }
           mRdsData = new FmRxRdsData(sFd);
           registerDataConnectionStateListener(app_context);
+          app_context.registerReceiver(mReceiver, mIntentFilter);
       }
       else {
          status = false;
@@ -2864,6 +2898,8 @@ public class FmReceiver extends FmTransceiver
                       mEnableLpfCdma == true) {
                    Log.d (TAG, "enabling LPF for net_type: " + Integer.toString(net_type));
                    mControl.enableLPF(sFd, enable);
+               } else {
+                   mControl.enableLPF(sFd, enable);
                }
                break;
            case TelephonyManager.NETWORK_TYPE_LTE:
@@ -2871,6 +2907,8 @@ public class FmReceiver extends FmTransceiver
                       mEnableLpfLte == true) {
                    Log.d (TAG, "enabling LPF for net_type: " + Integer.toString(net_type));
                    mControl.enableLPF(sFd, enable);
+               } else {
+                   mControl.enableLPF(sFd, enable);
                }
                break;
            case TelephonyManager.NETWORK_TYPE_GSM:
@@ -2878,6 +2916,8 @@ public class FmReceiver extends FmTransceiver
                       mEnableLpfGsm == true) {
                    Log.d (TAG, "enabling LPF for net_type: " + Integer.toString(net_type));
                    mControl.enableLPF(sFd, enable);
+               } else {
+                   mControl.enableLPF(sFd, enable);
                }
                break;
            case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
@@ -2885,10 +2925,13 @@ public class FmReceiver extends FmTransceiver
                       mEnableLpfScdma == true) {
                    Log.d (TAG, "enabling LPF for net_type: " + Integer.toString(net_type));
                    mControl.enableLPF(sFd, enable);
+               } else {
+                   mControl.enableLPF(sFd, enable);
                }
                break;
            default:
                Log.d (TAG, "net_type " + Integer.toString(net_type) + " doesn't need LPF enabling");
+               mControl.enableLPF(sFd, enable);
                break;
        }
    }