diff --git a/ipacm/inc/IPACM_Wlan.h b/ipacm/inc/IPACM_Wlan.h
index a7f768d..90d1819 100644
--- a/ipacm/inc/IPACM_Wlan.h
+++ b/ipacm/inc/IPACM_Wlan.h
@@ -162,7 +162,7 @@
 		     } /* end of for loop */
 
 		     /* clean the 4 Qos ipv4 RT rules for client:clt_indx */
-		     if(ip_type != IPA_IP_v6) /* for ipv4 */
+		     if(get_client_memptr(wlan_client, clt_indx)->route_rule_set_v4==true) /* for ipv4 */
 		     {
 				get_client_memptr(wlan_client, clt_indx)->route_rule_set_v4 = false;
 		     }
@@ -177,7 +177,7 @@
 		            {
 		    	        for(num_v6 =0;num_v6 < get_client_memptr(wlan_client, clt_indx)->route_rule_set_v6;num_v6++)	
 		    	        {	
- 		    	            IPACMDBG("Delete client index %d ipv6 Qos rules for %d-st ipv6 \n", clt_indx,num_v6);
+ 		    	            IPACMDBG("Delete client index %d ipv6 Qos rules for %d-st ipv6 for tx:%d\n", clt_indx,num_v6,tx_index);
 		    	        	rt_hdl = get_client_memptr(wlan_client, clt_indx)->wifi_rt_hdl[tx_index].wifi_rt_rule_hdl_v6[num_v6];                        
 		    	        	if(m_routing.DeleteRoutingHdl(rt_hdl, IPA_IP_v6) == false)
 			{
@@ -195,9 +195,9 @@
 		    } /* end of for loop */
 		
 		    /* clean the 4 Qos ipv6 RT rules for client:clt_indx */
-		    if(ip_type != IPA_IP_v4) /* for ipv6 */
+		    if(get_client_memptr(wlan_client, clt_indx)->route_rule_set_v6 != 0) /* for ipv6 */
 		    {
-		                 get_client_memptr(wlan_client, clt_indx)->route_rule_set_v6=false;
+		                 get_client_memptr(wlan_client, clt_indx)->route_rule_set_v6 = 0;
                     }
 		}
 		
diff --git a/ipacm/src/IPACM_Netlink.cpp b/ipacm/src/IPACM_Netlink.cpp
index c2536a3..0f43ba1 100644
--- a/ipacm/src/IPACM_Netlink.cpp
+++ b/ipacm/src/IPACM_Netlink.cpp
@@ -719,10 +719,21 @@
 
 				evt_data.event = IPA_ADDR_ADD_EVENT;
 				data_addr->if_index = msg_ptr->nl_addr_info.metainfo.ifa_index;
-
+				if(AF_INET6 == msg_ptr->nl_addr_info.attr_info.prefix_addr.ss_family)
+				{
+				    IPACMDBG("Posting IPA_ADDR_ADD_EVENT with if index:%d, ipv6 addr:0x%x:%x:%x:%x\n",
+								 data_addr->if_index,
+								 data_addr->ipv6_addr[0],
+								 data_addr->ipv6_addr[1],
+								 data_addr->ipv6_addr[2],
+								 data_addr->ipv6_addr[3]);				
+                }
+				else
+				{
 				IPACMDBG("Posting IPA_ADDR_ADD_EVENT with if index:%d, ipv4 addr:0x%x\n",
 								 data_addr->if_index,
 								 data_addr->ipv4_addr);
+				}
 				evt_data.evt_data = data_addr;
 				IPACM_EvtDispatcher::PostEvt(&evt_data);
 			}
diff --git a/ipacm/src/IPACM_Wan.cpp b/ipacm/src/IPACM_Wan.cpp
index 87c84ac..b7e013f 100644
--- a/ipacm/src/IPACM_Wan.cpp
+++ b/ipacm/src/IPACM_Wan.cpp
@@ -1620,19 +1620,18 @@
 
 	
 	/* delete the complete header for STA mode*/
-        if(header_set_v4 == true)
+        if((header_set_v4 == true) || (header_set_v6 == true))
         {
                 if (m_header.DeleteHeaderHdl(hdr_hdl_sta_v4) == false)
 		{
+		      IPACMERR("ErrorDeleting STA header for v4, aborting...\n");
 			res = IPACM_FAILURE;
 			goto fail;
 		}
-	}
 
-        if(header_set_v6 == true)
-        {
 		if (m_header.DeleteHeaderHdl(hdr_hdl_sta_v6) == false)
 		{
+		     IPACMERR("ErrorDeleting STA header for v6, aborting...\n");
 			res = IPACM_FAILURE;
 			goto fail;
 		}
