diff options
Diffstat (limited to 'net/sched/sch_prio.c')
-rw-r--r-- | net/sched/sch_prio.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c index 504a78cdb718..3651da3e2802 100644 --- a/net/sched/sch_prio.c +++ b/net/sched/sch_prio.c | |||
@@ -120,6 +120,19 @@ prio_requeue(struct sk_buff *skb, struct Qdisc* sch) | |||
120 | return ret; | 120 | return ret; |
121 | } | 121 | } |
122 | 122 | ||
123 | static struct sk_buff *prio_peek(struct Qdisc *sch) | ||
124 | { | ||
125 | struct prio_sched_data *q = qdisc_priv(sch); | ||
126 | int prio; | ||
127 | |||
128 | for (prio = 0; prio < q->bands; prio++) { | ||
129 | struct Qdisc *qdisc = q->queues[prio]; | ||
130 | struct sk_buff *skb = qdisc->ops->peek(qdisc); | ||
131 | if (skb) | ||
132 | return skb; | ||
133 | } | ||
134 | return NULL; | ||
135 | } | ||
123 | 136 | ||
124 | static struct sk_buff *prio_dequeue(struct Qdisc* sch) | 137 | static struct sk_buff *prio_dequeue(struct Qdisc* sch) |
125 | { | 138 | { |
@@ -421,6 +434,7 @@ static struct Qdisc_ops prio_qdisc_ops __read_mostly = { | |||
421 | .priv_size = sizeof(struct prio_sched_data), | 434 | .priv_size = sizeof(struct prio_sched_data), |
422 | .enqueue = prio_enqueue, | 435 | .enqueue = prio_enqueue, |
423 | .dequeue = prio_dequeue, | 436 | .dequeue = prio_dequeue, |
437 | .peek = prio_peek, | ||
424 | .requeue = prio_requeue, | 438 | .requeue = prio_requeue, |
425 | .drop = prio_drop, | 439 | .drop = prio_drop, |
426 | .init = prio_init, | 440 | .init = prio_init, |