diff --git a/ipacm/inc/IPACM_ConntrackListener.h b/ipacm/inc/IPACM_ConntrackListener.h
index 43b33c4..b4c3f28 100644
--- a/ipacm/inc/IPACM_ConntrackListener.h
+++ b/ipacm/inc/IPACM_ConntrackListener.h
@@ -70,6 +70,7 @@
 public:
 	 char wan_ifname[IPA_IFACE_NAME_LEN];
 	 uint32_t wan_ipaddr;
+	 bool isStaMode;
 
 	 IPACM_ConntrackListener();
 	 void event_callback(ipa_cm_event_id, void *data);
diff --git a/ipacm/inc/IPACM_Defs.h b/ipacm/inc/IPACM_Defs.h
index 28bc142..37a9ef5 100644
--- a/ipacm/inc/IPACM_Defs.h
+++ b/ipacm/inc/IPACM_Defs.h
@@ -54,7 +54,7 @@
 #define IPA_IFACE_NAME_LEN 16
 #define IPA_ALG_PROTOCOL_NAME_LEN  10
 
-#define IPA_WLAN_PARTIAL_HDR_OFFSET  12 // dst mac first then src mac
+#define IPA_WLAN_PARTIAL_HDR_OFFSET  0 // dst mac first then src mac
 #define IPA_VIRTUAL_IFACE_NAME "bridge0"
 #define IPA_WLAN_PARTIAL_HDR_NAME_v4  "IEEE802_3_v4"
 #define IPA_WLAN_PARTIAL_HDR_NAME_v6  "IEEE802_3_v6"
@@ -198,6 +198,7 @@
 	char ifname[IPA_IFACE_NAME_LEN];
 	uint32_t ipv4_addr;
 	uint32_t addr_mask;
+	bool is_sta;
 }ipacm_event_iface_up;
 
 
diff --git a/ipacm/src/IPACM_ConntrackClient.cpp b/ipacm/src/IPACM_ConntrackClient.cpp
index cff8e7a..b747e0c 100644
--- a/ipacm/src/IPACM_ConntrackClient.cpp
+++ b/ipacm/src/IPACM_ConntrackClient.cpp
@@ -291,13 +291,16 @@
 
 				nfct_filter_add_attr(filter, NFCT_FILTER_DST_IPV4, &filter_ipv4);
 
-				IPACMDBG("ignore connections orignated from interface %s\n", item->ifr_name);
-		IPACM_ConntrackClient::iptodot("with ipv4 address:", filter_ipv4.addr);
-		nfct_filter_set_logic(filter,
-													NFCT_FILTER_SRC_IPV4,
-													NFCT_FILTER_LOGIC_NEGATIVE);
+        if(!ct->isStaMode) {
+					IPACMDBG("ignore connections orignated from interface %s\n", item->ifr_name);
+					IPACM_ConntrackClient::iptodot("with ipv4 address:", filter_ipv4.addr);
+					nfct_filter_set_logic(filter,
+																NFCT_FILTER_SRC_IPV4,
+																NFCT_FILTER_LOGIC_NEGATIVE);
 
-		nfct_filter_add_attr(filter, NFCT_FILTER_SRC_IPV4, &filter_ipv4);
+					nfct_filter_add_attr(filter, NFCT_FILTER_SRC_IPV4, &filter_ipv4);
+				}
+
 			}
 		}
 
diff --git a/ipacm/src/IPACM_ConntrackListener.cpp b/ipacm/src/IPACM_ConntrackListener.cpp
index bfa2f37..3b62bd4 100644
--- a/ipacm/src/IPACM_ConntrackListener.cpp
+++ b/ipacm/src/IPACM_ConntrackListener.cpp
@@ -258,6 +258,7 @@
 
 	 IPACM_ConntrackClient::iptodot("public ip address", wanup_data->ipv4_addr);
 	 isWanUp = true;
+	 isStaMode = wanup_data->is_sta;
 
 	 wan_ipaddr = wanup_data->ipv4_addr;
 	 memcpy(wan_ifname, wanup_data->ifname, sizeof(wan_ifname));
@@ -489,7 +490,7 @@
 	 }
 	 else
 	 {
-		 IPACMDBG("Neither Destination nor Source nat flag reset\n");
+		 IPACMDBG("Neither Destination nor Source nat flag Set\n");
 		 orig_src_ip = nfct_get_attr_u32(ct, ATTR_ORIG_IPV4_SRC); 
 		 orig_src_ip = ntohl(orig_src_ip);
 		 if(orig_src_ip == 0)
@@ -640,7 +641,7 @@
 	 }
 	 }
 	 
-	 IPACMDBG("Nat Entry with below information will be added\n");
+	 IPACMDBG("Nat Entry with below information will either be added or deleted\n");
 	 IPACM_ConntrackClient::iptodot("target ip or dst ip", rule.target_ip);
 	 IPACMDBG("target port or dst port: 0x%x Decimal:%d\n", rule.target_port, rule.target_port);
 	 IPACM_ConntrackClient::iptodot("private ip or src ip", rule.private_ip);
@@ -650,7 +651,7 @@
 
 	 if(IPPROTO_TCP == rule.protocol)
 	 {
-		        na = NatApp::GetInstance();
+		  na = NatApp::GetInstance();
 			if(na == NULL)
 			{
 				IPACMERR("unable to get nat app instance");
diff --git a/ipacm/src/IPACM_Conntrack_NATApp.cpp b/ipacm/src/IPACM_Conntrack_NATApp.cpp
index 27f6ab0..36dec9a 100644
--- a/ipacm/src/IPACM_Conntrack_NATApp.cpp
+++ b/ipacm/src/IPACM_Conntrack_NATApp.cpp
@@ -185,7 +185,12 @@
 			 cache[cnt].target_port == rule->target_port &&
 			 cache[cnt].protocol == rule->protocol)
 		{
-			IPACMDBG("Duplicate Rule\n");
+			IPACMDBG("Duplicate Rule, ignore\n");
+			IPACMDBG("Received below nat entry for deletion\n");
+			IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
+			IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
+			IPACMDBG("Private Port: %d\t Target Port: %d\t", rule->private_port, rule->target_port);
+			IPACMDBG("protocolcol: %d\n", rule->protocol);
 			return true;
 		}
 	}
@@ -224,21 +229,15 @@
 					return -1;
 				}
 
-				IPACMDBG("Deleted below Nat entry Successfully\n");
+				IPACMDBG("Deleted Nat entry Successfully\n");
 			}
 			else
 			{
-				IPACMDBG("Deleted below Nat entry only from cache\n");
+				IPACMDBG("Deleted Nat entry only from cache\n");
 			}
 			
 			memset(&cache[cnt], 0, sizeof(cache[cnt]));
 			curCnt--;
-			
-			IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
-			IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
-			IPACMDBG("Private Port: %d\t Target Port: %d\t", rule->private_port, rule->target_port);
-			IPACMDBG("protocolcol: %d\n", rule->protocol);
-			
 			break; 
 		}
 	}
@@ -256,6 +255,12 @@
 
 	CHK_TBL_HDL();
 
+	IPACMDBG("Received below nat entry for deletion\n");
+	IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
+	IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
+	IPACMDBG("Private Port: %d\t Target Port: %d\t", rule->private_port, rule->target_port);
+	IPACMDBG("protocolcol: %d\n", rule->protocol);
+
 	if(isAlgPort(rule->protocol, rule->private_port) ||
 		 isAlgPort(rule->protocol, rule->target_port))
 	{
@@ -270,11 +275,6 @@
 		 rule->protocol == 0)
 	{
 		IPACMERR("Invalid Connection, ignoring it\n");
-		IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
-		IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
-		IPACMDBG("Private Port:%d \t Target Port: %d\t", rule->private_port, rule->target_port);
-		IPACMDBG("Public Port:%d\n", rule->public_port);
-		IPACMDBG("protocol: %d\n", rule->protocol);
 		return 0;
 	}
 
@@ -345,12 +345,7 @@
 
 	if(cache[cnt].enabled == true)
 	{
-		IPACMDBG("Added below rule successfully\n");
-		IPACM_ConntrackClient::iptodot("Private IP", rule->private_ip);
-		IPACM_ConntrackClient::iptodot("Target IP", rule->target_ip);
-		IPACMDBG("Private Port:%d \t Target Port: %d\t", rule->private_port, rule->target_port);
-		IPACMDBG("Public Port:%d\n", rule->public_port);
-		IPACMDBG("protocol: %d\n", rule->protocol);
+		IPACMDBG("Added rule successfully\n");
 	}
 
 	return 0;
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 4c9710d..ac49526 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -717,6 +717,7 @@
 
 		memcpy(wanup_data->ifname, dev_name, sizeof(wanup_data->ifname));
 		wanup_data->ipv4_addr = wan_v4_addr;
+		wanup_data->is_sta = IPACM_Wan::backhaul_is_sta_mode;
 		IPACMDBG("Posting IPA_HANDLE_WAN_UP with below information:\n");
 		IPACMDBG("if_name:%s, ipv4_address:0x%x\n",
 						 wanup_data->ifname, wanup_data->ipv4_addr);
