Index: /branches/rel_apv_10_7/usr/src/sys/click/app/llb/llb_hc.c
===================================================================
--- /branches/rel_apv_10_7/usr/src/sys/click/app/llb/llb_hc.c	(revision 38500)
+++ /branches/rel_apv_10_7/usr/src/sys/click/app/llb/llb_hc.c	(working copy)
@@ -331,8 +331,9 @@
 	struct llb_link *link_node;
 	struct ether_header *eh = ep;
 	struct llentry *lle = NULL;
+	uint16_t ether_type;
 
-	if (hc_icmp_flag == 0 || (link_node = link_queue.head) == NULL)
+	if (llb_stat_enable == 0 || (link_node = link_queue.head) == NULL)
 		return;
 
 	while (link_node != NULL) {
@@ -361,6 +362,16 @@
 			  link_node = link_node->next;
 			  continue;
 			}
+
+			/* Get ether type from header */
+			ether_type = ntohs(eh->ether_type);
+			/* Check ip version */
+			if ((ether_type == ETHERTYPE_IP && link_node->is_ipv6) ||
+				(ether_type == ETHERTYPE_IPV6 && !link_node->is_ipv6)) {
+				link_node = link_node->next;
+				continue;
+			}
+
 			lle = ERT_LLENTRY(link_node->erti.rule);
 			if(lle && (lle->la_flags & LLE_VALID) && 
 				!bcmp(eh->ether_shost, lle->ll_addr.mac16, ETHER_ADDR_LEN)) {
@@ -730,13 +741,7 @@
 		return 0;
 	}
 
-	if ( !hc_icmp_flag ) {
-		app_printf(pcb, "Please turn on llb link health firstly\n");
-		return 0;	
-		/*link_status();*/
-	}
-
-       app_printf(pcb, "Bandwidth statistics:\n");
+	app_printf(pcb, "Bandwidth statistics:\n");
 	while (link_node != NULL) {
 		if(LLB_LINK_ROUTE_ENABLE != link_node->is_enable) {
 			app_printf(pcb, "Link \"%s\" is disabled\n", link_node->link_name);
Index: /branches/rel_apv_10_7/usr/src/sys/click/netinet/click_var.h
===================================================================
--- /branches/rel_apv_10_7/usr/src/sys/click/netinet/click_var.h	(revision 38500)
+++ /branches/rel_apv_10_7/usr/src/sys/click/netinet/click_var.h	(working copy)
@@ -1408,6 +1408,8 @@
 }
 /* end bug 57710  chenhy  2015-7-28 */
 
+extern int llb_stat_enable;
+
 /* IF_OUTPUT() is only for ipv4 */
 #define IF_OUTPUT(eroute_rule, m) do {	  \
 		struct route ro; \
@@ -1419,7 +1421,7 @@
 		is_lle_usable(eroute_rule); \
 		ro.ro_lle = ERT_LLENTRY(eroute_rule); \
 		ATCP_MBUF_OUT(m); \
-		if (hc_icmp_flag) { \
+		if (llb_stat_enable) { \
 			llb_stat_update((eroute_rule)->gw , NULL, \
 			                (m)->m_pkthdr.len + ETHER_HEADER_LEN, NULL); \
 		} \
