}
static __always_inline int
-dscp_lookup_class(uint8_t *dscp, bool ingress, struct qosify_class **out_class)
+dscp_lookup_class(uint8_t *dscp, bool ingress, struct qosify_class **out_class,
+ bool counter)
{
struct qosify_class *class;
__u8 fallback_flag;
if (!(class->flags & QOSIFY_CLASS_FLAG_PRESENT))
return -1;
+ if (counter)
+ class->packets++;
*dscp = dscp_val(&class->val, ingress);
*dscp |= fallback_flag;
*out_class = class;
dscp = ip_val->dscp;
}
- if (dscp_lookup_class(&dscp, ingress, &class))
+ if (dscp_lookup_class(&dscp, ingress, &class, true))
return TC_ACT_UNSPEC;
if (class) {
if (check_flow(&class->config, skb, &dscp) &&
- dscp_lookup_class(&dscp, ingress, &class))
+ dscp_lookup_class(&dscp, ingress, &class, false))
return TC_ACT_UNSPEC;
}