Stephen Hemminger wrote:
I'm thinking of changing enqueue (and maybe later dequeue) API to decouple
the qlen assumption.
Either:
rc = qdisc->enqueue(skb, qdisc, &my->qlen)
or add NET_XMIT_DUPPED
rc = qdisc->enqueue(skb, qdisc);
if (rc < NET_XMIT_SUCCESS) {
++my->dropped;
} else {
my->qlen++;
if (rc == NET_XMIT_DUPPED)
my->qlen++;
}
To be frank, I don't like either one. Both have the same problem
wrt. HFSC, the first solution requires changes all over the place,
the second one is unflexible and also requires lots of changes. I
don't see what could benefit from this API change besides netem,
so I'd vote to go with my proposed solution: store the parent
pointers in struct Qdisc, add code to walk up the tree and adjust
the qlen to netem, and fix up HFSC.
Regards
Patrick
|