Here is some code-change for
1. fix the header not clean issue in AP+STA mode for v6
2. checking the wifi client RT rule is setup or not when receive
power-save mode to delete

Change-Id: I2f8cdd39db8813645714c6df8ec5f6a6a7efb5f5
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;
 		}