Index: /branches/rel_apv_10_4_0_112_gail/usr/src/sys/click/app/qos/qos_getstat.c
===================================================================
--- /branches/rel_apv_10_4_0_112_gail/usr/src/sys/click/app/qos/qos_getstat.c	(revision 38486)
+++ /branches/rel_apv_10_4_0_112_gail/usr/src/sys/click/app/qos/qos_getstat.c	(working copy)
@@ -72,43 +72,44 @@
 	int ret;
 	struct rm_class *cl;
 
+	if (!current_dyn_q_count) {
+	    if (*status == NULL) {
+		    MALLOC(*status, void* , sizeof(ustat_network_qos_QosRootQueue_t), ustat_status_type, M_NOWAIT);	
+		    ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf = STAILQ_FIRST(&qos_interface_conf_head);
+		    ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot = STAILQ_FIRST(&qos_queue_root_head);
+	    } else {
+		    ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot, list_entry);
+	    }
 
-	if (*status == NULL) {
-		MALLOC(*status, void* , sizeof(ustat_network_qos_QosRootQueue_t), ustat_status_type, M_NOWAIT);	
-		((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf = STAILQ_FIRST(&qos_interface_conf_head);
-		((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot = STAILQ_FIRST(&qos_queue_root_head);
-	} else {
-		((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot, list_entry);
-	}
-
-	for(; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf = STAILQ_NEXT(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf, list_entry)) {
-
-		for(; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot, list_entry)) {
-
-			if(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf->iDir != ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot->iDir) {
-				continue;
-			}
+	    for(; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf = STAILQ_NEXT(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf, list_entry)) {
 
-			if(strcmp(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf->sHwIf, ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot->sHwIf)) {
-				continue;
-			}
+		    for(; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot; ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot, list_entry)) {
 
-			snprintf(qosq_info.name, QOS_QNAME_SIZE, "%s", ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot->sQName);
-			ret = qos_queue_get(&qosq_info);
-			if(QOS_FAILURE == ret) {
-				continue;
-			}
+			    if(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf->iDir != ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot->iDir) {
+					continue;
+			    }
 
-			qos_queue_free(&qosq_info);
+			    if(strcmp(((ustat_network_qos_QosRootQueue_t*)(*status))->pQosIfConf->sHwIf, ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot->sHwIf)) {
+				    continue;
+			    }
+
+			    snprintf(qosq_info.name, QOS_QNAME_SIZE, "%s", ((ustat_network_qos_QosRootQueue_t*)(*status))->pQosQRoot->sQName);
+			    ret = qos_queue_get(&qosq_info);
+			    if(QOS_FAILURE == ret) {
+				    continue;
+			    }
+
+			    qos_queue_free(&qosq_info);
+
+			    cl = (struct rm_class *)qosq_info.qp;
+			    ((ustat_network_qos_QosRootQueue_t*)(*status))->cl = cl;
+			    return;
+		    }
+	    }
 
-			cl = (struct rm_class *)qosq_info.qp;
-			((ustat_network_qos_QosRootQueue_t*)(*status))->cl = cl;
-			return;
-		}
+	    free(*status, ustat_status_type);
+	    *status = NULL;
 	}
-
-	free(*status, ustat_status_type);
-	*status = NULL;
 }
 
 void ustat_data_assign_network_qos_QosRootQueue(void **status, void *data)
@@ -154,49 +155,51 @@
 	int ret;
 	struct rm_class *cl;
 
-	if (*status == NULL) {
-		MALLOC(*status, void* , sizeof(ustat_network_qos_QosSubQueue_t), ustat_status_type, M_NOWAIT);	
-		((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf = STAILQ_FIRST(&qos_interface_conf_head);
-		((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot = STAILQ_FIRST(&qos_queue_root_head);
-	} else {
-		((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot, list_entry);
-	}
+	if (!current_dyn_q_count) {
+	    if (*status == NULL) {
+		    MALLOC(*status, void* , sizeof(ustat_network_qos_QosSubQueue_t), ustat_status_type, M_NOWAIT);	
+		    ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf = STAILQ_FIRST(&qos_interface_conf_head);
+		    ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot = STAILQ_FIRST(&qos_queue_root_head);
+	    } else {
+		    ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot, list_entry);
+	    }
 
-	for(; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf = STAILQ_NEXT(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf, list_entry)) {
+	    for(; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf = STAILQ_NEXT(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf, list_entry)) {
 
-		for(; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot, list_entry)) {
+		    for(; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot; ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot, list_entry)) {
 
 			if(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf->iDir != ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot->iDir) {
-				continue;
-			}	
+				    continue;
+			    }
 
-			if(strcmp(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf->sHwIf, ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot->sHwIf)) {
-				continue;
-			}
-
-			STAILQ_FOREACH(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQSub, &qos_queue_sub_head, list_entry) {
-				if(strcmp(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot->sQName, ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQSub->sQRoot)) {
-					continue;
-				}
-
-			snprintf(qosq_info.name, QOS_QNAME_SIZE, "%s", ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQSub->sQName);
-			ret = qos_queue_get(&qosq_info);
-			if(QOS_FAILURE == ret) {
-				continue;
-			}
-
-			qos_queue_free(&qosq_info);
-
-			cl = (struct rm_class *)qosq_info.qp;
-			((ustat_network_qos_QosSubQueue_t*)(*status))->cl = cl;
-			return;
-			}	
-
-		}
-	}
-
-	free(*status, ustat_status_type);
-	*status = NULL;
+			    if(strcmp(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosIfConf->sHwIf, ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot->sHwIf)) {
+				    continue;
+			    }
+
+			    STAILQ_FOREACH(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQSub, &qos_queue_sub_head, list_entry) {
+				    if(strcmp(((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQRoot->sQName, ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQSub->sQRoot)) {
+					    continue;
+				    }
+
+				    snprintf(qosq_info.name, QOS_QNAME_SIZE, "%s", ((ustat_network_qos_QosSubQueue_t*)(*status))->pQosQSub->sQName);
+				    ret = qos_queue_get(&qosq_info);
+				    if(QOS_FAILURE == ret) {
+					    continue;
+				    }
+
+				    qos_queue_free(&qosq_info);
+
+				    cl = (struct rm_class *)qosq_info.qp;
+				    ((ustat_network_qos_QosSubQueue_t*)(*status))->cl = cl;
+				    return;
+			    }
+
+		    }
+	    }
+
+	    free(*status, ustat_status_type);
+	    *status = NULL;
+        }
 }
 
 void ustat_data_assign_network_qos_QosSubQueue(void **status, void *data)
@@ -241,25 +244,26 @@
 {
 	qos_filter_share_t *qs;
 
-	if (*status == NULL) {
-		MALLOC(*status, void* , sizeof(ustat_network_qos_QosFilter_t), ustat_status_type, M_NOWAIT);
-		((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf = STAILQ_FIRST(&qos_interface_conf_head);
-		((ustat_network_qos_QosFilter_t*)(*status))->pQosQRoot = STAILQ_FIRST(&qos_queue_root_head);
-		((ustat_network_qos_QosFilter_t*)(*status))->pQosQSub = STAILQ_FIRST(&qos_queue_sub_head); 
-		((ustat_network_qos_QosFilter_t*)(*status))->i = 0;
-		((ustat_network_qos_QosFilter_t*)(*status))->j = 0;
-	} else {
+	if (!current_dyn_q_count) {
+	    if (*status == NULL) {
+		    MALLOC(*status, void* , sizeof(ustat_network_qos_QosFilter_t), ustat_status_type, M_NOWAIT);
+		    ((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf = STAILQ_FIRST(&qos_interface_conf_head);
+		    ((ustat_network_qos_QosFilter_t*)(*status))->pQosQRoot = STAILQ_FIRST(&qos_queue_root_head);
+		    ((ustat_network_qos_QosFilter_t*)(*status))->pQosQSub = STAILQ_FIRST(&qos_queue_sub_head); 
+		    ((ustat_network_qos_QosFilter_t*)(*status))->i = 0;
+		    ((ustat_network_qos_QosFilter_t*)(*status))->j = 0;
+	    } else {
 
-		if (((ustat_network_qos_QosFilter_t*)(*status))->i < QOS_MAX_FLTR_NUM) {
+		    if (((ustat_network_qos_QosFilter_t*)(*status))->i < QOS_MAX_FLTR_NUM) {
 			((ustat_network_qos_QosFilter_t*)(*status))->i++;
-		} else {
+		    } else {
 			((ustat_network_qos_QosFilter_t*)(*status))->j++;
-		}
-	}
+		    }
+	    }
 
-	qs = &qos_filter_share;
+	    qs = &qos_filter_share;
 
-	for( ; ((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf; ((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf = STAILQ_NEXT(((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf, list_entry)) {
+	    for( ; ((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf; ((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf = STAILQ_NEXT(((ustat_network_qos_QosFilter_t*)(*status))->pQosIfConf, list_entry)) {
 
 		for(; ((ustat_network_qos_QosFilter_t*)(*status))->pQosQRoot ;((ustat_network_qos_QosFilter_t*)(*status))->pQosQRoot = STAILQ_NEXT(((ustat_network_qos_QosFilter_t*)(*status))->pQosQRoot, list_entry)) {
 
@@ -295,10 +299,11 @@
 			}
 			((ustat_network_qos_QosFilter_t*)(*status))->i = 0;
 		}
-	}
+	    }
 
-	free(*status, ustat_status_type);
-	*status = NULL;
+	    free(*status, ustat_status_type);
+	    *status = NULL;
+        }
 }
 
 void ustat_data_assign_network_qos_QosFilter(void **status, void *data)
