[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: TC calling sequence timing
Hello!
OK, I found those your mails.
> tc qdisc add dev $DEV handle 1:0 root tbf rate 80Kbps buffer 3Kb limit 40Kb
> DEV=atm0 or eth0 (it has been tested with both)
In this case maximal timeout cannot be more than ~40msec.
If it is greater, it is bug.
EOI has nothing to do with this, it cannot decrease burstiness,
burst size is controlled by and only by "burst" (=buffer).
Alexey
PS, try the following unofficial patch.
diff -ur ../vger-000131/linux/include/net/pkt_sched.h linux/include/net/pkt_sched.h
--- ../vger-000131/linux/include/net/pkt_sched.h Sat May 1 16:28:20 1999
+++ linux/include/net/pkt_sched.h Mon Jan 31 22:29:12 2000
@@ -387,7 +387,7 @@
void qdisc_run_queues(void);
int qdisc_restart(struct device *dev);
-extern __inline__ void qdisc_wakeup(struct device *dev)
+extern __inline__ void qdisc_wakeup_one(struct device *dev)
{
if (!dev->tbusy) {
struct Qdisc *q = dev->qdisc;
@@ -397,6 +397,23 @@
}
}
}
+
+extern __inline__ void qdisc_wakeup(struct device *dev)
+{
+ if (!dev->tbusy) {
+ struct Qdisc *q = dev->qdisc;
+ int res;
+
+ while ((res = qdisc_restart(dev)) < 0 && !dev->tbusy)
+ /* NOTHING */;
+
+ if (res && q->h.forw == NULL) {
+ q->h.forw = qdisc_head.forw;
+ qdisc_head.forw = &q->h;
+ }
+ }
+}
+
extern __inline__ unsigned psched_mtu(struct device *dev)
{