@@ -74,6 +74,11 @@ static const struct nla_policy ets_class_policy[TCA_ETS_MAX + 1] = {
7474 [TCA_ETS_QUANTA_BAND ] = { .type = NLA_U32 },
7575};
7676
77+ static bool cl_is_active (struct ets_class * cl )
78+ {
79+ return !list_empty (& cl -> alist );
80+ }
81+
7782static int ets_quantum_parse (struct Qdisc * sch , const struct nlattr * attr ,
7883 unsigned int * quantum ,
7984 struct netlink_ext_ack * extack )
@@ -414,7 +419,6 @@ static int ets_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
414419 struct ets_sched * q = qdisc_priv (sch );
415420 struct ets_class * cl ;
416421 int err = 0 ;
417- bool first ;
418422
419423 cl = ets_classify (skb , sch , & err );
420424 if (!cl ) {
@@ -424,7 +428,6 @@ static int ets_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
424428 return err ;
425429 }
426430
427- first = !cl -> qdisc -> q .qlen ;
428431 err = qdisc_enqueue (skb , cl -> qdisc , to_free );
429432 if (unlikely (err != NET_XMIT_SUCCESS )) {
430433 if (net_xmit_drop_count (err )) {
@@ -434,7 +437,7 @@ static int ets_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
434437 return err ;
435438 }
436439
437- if (first && !ets_class_is_strict (q , cl )) {
440+ if (! cl_is_active ( cl ) && !ets_class_is_strict (q , cl )) {
438441 list_add_tail (& cl -> alist , & q -> active );
439442 cl -> deficit = cl -> quantum ;
440443 }
0 commit comments