diff options
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r-- | net/sched/sch_generic.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 03cf001adb41..a08a98e7b943 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -311,12 +311,17 @@ static const u8 prio2band[TC_PRIO_MAX+1] = | |||
311 | generic prio+fifo combination. | 311 | generic prio+fifo combination. |
312 | */ | 312 | */ |
313 | 313 | ||
314 | static int | 314 | static inline struct sk_buff_head *prio2list(struct sk_buff *skb, |
315 | pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc* qdisc) | 315 | struct Qdisc *qdisc) |
316 | { | 316 | { |
317 | struct sk_buff_head *list = qdisc_priv(qdisc); | 317 | struct sk_buff_head *list = qdisc_priv(qdisc); |
318 | return list + prio2band[skb->priority & TC_PRIO_MAX]; | ||
319 | } | ||
318 | 320 | ||
319 | list += prio2band[skb->priority&TC_PRIO_MAX]; | 321 | static int |
322 | pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc* qdisc) | ||
323 | { | ||
324 | struct sk_buff_head *list = prio2list(skb, qdisc); | ||
320 | 325 | ||
321 | if (skb_queue_len(list) < qdisc->dev->tx_queue_len) { | 326 | if (skb_queue_len(list) < qdisc->dev->tx_queue_len) { |
322 | qdisc->q.qlen++; | 327 | qdisc->q.qlen++; |
@@ -345,12 +350,8 @@ pfifo_fast_dequeue(struct Qdisc* qdisc) | |||
345 | static int | 350 | static int |
346 | pfifo_fast_requeue(struct sk_buff *skb, struct Qdisc* qdisc) | 351 | pfifo_fast_requeue(struct sk_buff *skb, struct Qdisc* qdisc) |
347 | { | 352 | { |
348 | struct sk_buff_head *list = qdisc_priv(qdisc); | ||
349 | |||
350 | list += prio2band[skb->priority&TC_PRIO_MAX]; | ||
351 | |||
352 | qdisc->q.qlen++; | 353 | qdisc->q.qlen++; |
353 | return __qdisc_requeue(skb, qdisc, list); | 354 | return __qdisc_requeue(skb, qdisc, prio2list(skb, qdisc)); |
354 | } | 355 | } |
355 | 356 | ||
356 | static void | 357 | static void |