Subject: [PATCH v2] Re: iproute2 action/policer question

From: Jarek Poplawski <[email-masked]>
Date: Tue, 16 Jun 2009 20:33:55 +0200

Here is take 2 with Jamal's ack, and Pawel's name "simplified".
Pawel, if you're not OK with this feel free to send your "Reported-by"
line, and I hope David will replace it.

Thanks,
Jarek P.
-------------------> take 2
pkt_sched: Update drops stats in act_police

Action police statistics could be misleading because drops are not
shown when expected.

With feedback from: Jamal Hadi Salim <[email-masked]>

Reported-by: Pawel Staszewski <[email-masked]>
Signed-off-by: Jarek Poplawski <[email-masked]>
Acked-by: Jamal Hadi Salim <[email-masked]>
---

 net/sched/act_police.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/net/sched/act_police.c b/net/sched/act_police.c
index f8f047b..723964c 100644
--- a/net/sched/act_police.c
+++ b/net/sched/act_police.c
@@ -294,6 +294,8 @@ static int tcf_act_police(struct sk_buff *skb, struct tc_action *a,
 	if (police->tcfp_ewma_rate &&
 	    police->tcf_rate_est.bps >= police->tcfp_ewma_rate) {
 		police->tcf_qstats.overlimits++;
+		if (police->tcf_action == TC_ACT_SHOT)
+			police->tcf_qstats.drops++;
 		spin_unlock(&police->tcf_lock);
 		return police->tcf_action;
 	}
@@ -327,6 +329,8 @@ static int tcf_act_police(struct sk_buff *skb, struct tc_action *a,
 	}
 
 	police->tcf_qstats.overlimits++;
+	if (police->tcf_action == TC_ACT_SHOT)
+		police->tcf_qstats.drops++;
 	spin_unlock(&police->tcf_lock);
 	return police->tcf_action;
 }