View | Details | Raw Unified | Return to bug 204405
Collapse All | Expand All

(-)Makefile (-1 / +6 lines)
Lines 3-9 Link Here
3
3
4
PORTNAME=	pftop
4
PORTNAME=	pftop
5
PORTVERSION=	0.7
5
PORTVERSION=	0.7
6
PORTREVISION=	4
6
PORTREVISION=	5
7
CATEGORIES=	sysutils net
7
CATEGORIES=	sysutils net
8
MASTER_SITES=	http://www.eee.metu.edu.tr/~canacar/
8
MASTER_SITES=	http://www.eee.metu.edu.tr/~canacar/
9
9
Lines 36-41 Link Here
36
PLIST_FILES=	sbin/pftop man/man8/pftop.8.gz
36
PLIST_FILES=	sbin/pftop man/man8/pftop.8.gz
37
37
38
post-patch:
38
post-patch:
39
.if ${OSVERSION} >= 1100000
40
	@${ECHO_MSG} "===> Applying FairQ/Codel patches to ${PORTNAME}."
41
	@${CAT} ${FILESDIR}/extra-patch-fairq_codel.diff | \
42
		${PATCH} ${PATCH_ARGS}
43
.endif
39
	@${REINPLACE_CMD} -e 's|<sys/queue.h>|"${FILESDIR}/queue.h"|g' \
44
	@${REINPLACE_CMD} -e 's|<sys/queue.h>|"${FILESDIR}/queue.h"|g' \
40
	    ${WRKSRC}/engine.c
45
	    ${WRKSRC}/engine.c
41
	@${REINPLACE_CMD} -e 's|__dead|__dead2|g' ${WRKSRC}/sf-gencode.h
46
	@${REINPLACE_CMD} -e 's|__dead|__dead2|g' ${WRKSRC}/sf-gencode.h
(-)files/extra-patch-fairq_codel.diff (+102 lines)
Line 0 Link Here
1
--- pftop.c.orig	2013-05-11 12:53:55.000000000 +0000
2
+++ pftop.c	2013-05-11 12:54:00.000000000 +0000
3
@@ -48,6 +48,8 @@
4
 #include <altq/altq_cbq.h>
5
 #include <altq/altq_priq.h>
6
 #include <altq/altq_hfsc.h>
7
+#include <altq/altq_fairq.h>
8
+#include <altq/altq_codel.h>
9
 #endif
10
 
11
 #include <ctype.h>
12
@@ -371,6 +373,8 @@
13
 	class_stats_t		cbq_stats;
14
 	struct priq_classstats	priq_stats;
15
 	struct hfsc_classstats	hfsc_stats;
16
+	struct fairq_classstats	fairq_stats;
17
+	struct codel_ifstats	codel_stats;
18
 };
19
 
20
 struct queue_stats {
21
@@ -1764,6 +1768,8 @@
22
 		return (-1);
23
 	}
24
 	num_queues = nr_queues = pa.nr;
25
+	if (pa.altq.scheduler == ALTQT_CODEL)
26
+		num_queues = 1;
27
 	for (nr = 0; nr < nr_queues; ++nr) {
28
 		pa.nr = nr;
29
 		if (ioctl(pf_dev, DIOCGETALTQ, &pa)) {
30
@@ -1772,10 +1778,10 @@
31
 			return (-1);
32
 		}
33
 #ifdef PFALTQ_FLAG_IF_REMOVED
34
-		if (pa.altq.qid > 0 &&
35
+		if ((pa.altq.qid > 0 || pa.altq.scheduler == ALTQT_CODEL) &&
36
 		    !(pa.altq.local_flags & PFALTQ_FLAG_IF_REMOVED)) {
37
 #else
38
-		if (pa.altq.qid > 0) {
39
+		if (pa.altq.qid > 0  || pa.altq.scheduler == ALTQT_CODEL) {
40
 #endif
41
 			pq.nr = nr;
42
 			pq.ticket = pa.ticket;
43
@@ -1928,11 +1934,14 @@
44
 	tb_start();
45
 	for (d = 0; d < node->depth; d++)
46
 		tbprintf(" ");
47
-	tbprintf(node->altq.qname);
48
+	if (node->altq.qname[0] != '\0')
49
+		tbprintf(node->altq.qname);
50
+	else
51
+		tbprintf("root");
52
 	print_fld_tb(FLD_QUEUE);
53
 
54
 	if (node->altq.scheduler == ALTQT_CBQ ||
55
-	    node->altq.scheduler == ALTQT_HFSC
56
+	    node->altq.scheduler == ALTQT_HFSC || node->altq.scheduler == ALTQT_FAIRQ || node->altq.scheduler == ALTQT_CODEL
57
 		)
58
 		print_fld_bw(FLD_BANDW, (double)node->altq.bandwidth);
59
 	
60
@@ -2003,6 +2012,42 @@
61
 					node->qstats_last.data.hfsc_stats.xmit_cnt.bytes, interval);
62
 		}
63
 		break;
64
+       case ALTQT_FAIRQ:
65
+               print_fld_str(FLD_SCHED, "fairq");
66
+               print_fld_size(FLD_PKTS,
67
+                               node->qstats.data.fairq_stats.xmit_cnt.packets);
68
+               print_fld_size(FLD_BYTES,
69
+                               node->qstats.data.fairq_stats.xmit_cnt.bytes);
70
+               print_fld_size(FLD_DROPP,
71
+                               node->qstats.data.fairq_stats.drop_cnt.packets);
72
+               print_fld_size(FLD_DROPB,
73
+                               node->qstats.data.fairq_stats.drop_cnt.bytes);
74
+               print_fld_size(FLD_QLEN, node->qstats.data.fairq_stats.qlength);
75
+               if (interval > 0) {
76
+                       pps = calc_pps(node->qstats.data.fairq_stats.xmit_cnt.packets,
77
+                                       node->qstats_last.data.fairq_stats.xmit_cnt.packets, interval);
78
+                       bps = calc_rate(node->qstats.data.fairq_stats.xmit_cnt.bytes,
79
+                                       node->qstats_last.data.fairq_stats.xmit_cnt.bytes, interval);
80
+               }
81
+               break;
82
+       case ALTQT_CODEL:
83
+               print_fld_str(FLD_SCHED, "codel");
84
+               print_fld_size(FLD_PKTS,
85
+                               node->qstats.data.codel_stats.cl_xmitcnt.packets);
86
+               print_fld_size(FLD_BYTES,
87
+                               node->qstats.data.codel_stats.cl_xmitcnt.bytes);
88
+               print_fld_size(FLD_DROPP,
89
+                               node->qstats.data.codel_stats.cl_dropcnt.packets);
90
+               print_fld_size(FLD_DROPB,
91
+                               node->qstats.data.codel_stats.cl_dropcnt.bytes);
92
+               print_fld_size(FLD_QLEN, node->qstats.data.codel_stats.qlength);
93
+               if (interval > 0) {
94
+                       pps = calc_pps(node->qstats.data.codel_stats.cl_xmitcnt.packets,
95
+                                       node->qstats_last.data.codel_stats.cl_xmitcnt.packets, interval);
96
+                       bps = calc_rate(node->qstats.data.codel_stats.cl_xmitcnt.bytes,
97
+                                       node->qstats_last.data.codel_stats.cl_xmitcnt.bytes, interval);
98
+               }
99
+               break;
100
 	}
101
 
102
 	/* if (node->altq.scheduler != ALTQT_HFSC && interval > 0) { */

Return to bug 204405