aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_hfsc.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_hfsc.c')
-rw-r--r--net/sched/sch_hfsc.c19
1 files changed, 0 insertions, 19 deletions
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
index d90b1652f2af..071c4749a12b 100644
--- a/net/sched/sch_hfsc.c
+++ b/net/sched/sch_hfsc.c
@@ -184,7 +184,6 @@ struct hfsc_sched
184 struct rb_root eligible; /* eligible tree */ 184 struct rb_root eligible; /* eligible tree */
185 struct list_head droplist; /* active leaf class list (for 185 struct list_head droplist; /* active leaf class list (for
186 dropping) */ 186 dropping) */
187 struct sk_buff_head requeue; /* requeued packet */
188 struct qdisc_watchdog watchdog; /* watchdog timer */ 187 struct qdisc_watchdog watchdog; /* watchdog timer */
189}; 188};
190 189
@@ -1432,7 +1431,6 @@ hfsc_init_qdisc(struct Qdisc *sch, struct nlattr *opt)
1432 return err; 1431 return err;
1433 q->eligible = RB_ROOT; 1432 q->eligible = RB_ROOT;
1434 INIT_LIST_HEAD(&q->droplist); 1433 INIT_LIST_HEAD(&q->droplist);
1435 skb_queue_head_init(&q->requeue);
1436 1434
1437 q->root.cl_common.classid = sch->handle; 1435 q->root.cl_common.classid = sch->handle;
1438 q->root.refcnt = 1; 1436 q->root.refcnt = 1;
@@ -1517,7 +1515,6 @@ hfsc_reset_qdisc(struct Qdisc *sch)
1517 hlist_for_each_entry(cl, n, &q->clhash.hash[i], cl_common.hnode) 1515 hlist_for_each_entry(cl, n, &q->clhash.hash[i], cl_common.hnode)
1518 hfsc_reset_class(cl); 1516 hfsc_reset_class(cl);
1519 } 1517 }
1520 __skb_queue_purge(&q->requeue);
1521 q->eligible = RB_ROOT; 1518 q->eligible = RB_ROOT;
1522 INIT_LIST_HEAD(&q->droplist); 1519 INIT_LIST_HEAD(&q->droplist);
1523 qdisc_watchdog_cancel(&q->watchdog); 1520 qdisc_watchdog_cancel(&q->watchdog);
@@ -1542,7 +1539,6 @@ hfsc_destroy_qdisc(struct Qdisc *sch)
1542 hfsc_destroy_class(sch, cl); 1539 hfsc_destroy_class(sch, cl);
1543 } 1540 }
1544 qdisc_class_hash_destroy(&q->clhash); 1541 qdisc_class_hash_destroy(&q->clhash);
1545 __skb_queue_purge(&q->requeue);
1546 qdisc_watchdog_cancel(&q->watchdog); 1542 qdisc_watchdog_cancel(&q->watchdog);
1547} 1543}
1548 1544
@@ -1609,8 +1605,6 @@ hfsc_dequeue(struct Qdisc *sch)
1609 1605
1610 if (sch->q.qlen == 0) 1606 if (sch->q.qlen == 0)
1611 return NULL; 1607 return NULL;
1612 if ((skb = __skb_dequeue(&q->requeue)))
1613 goto out;
1614 1608
1615 cur_time = psched_get_time(); 1609 cur_time = psched_get_time();
1616 1610
@@ -1659,24 +1653,12 @@ hfsc_dequeue(struct Qdisc *sch)
1659 set_passive(cl); 1653 set_passive(cl);
1660 } 1654 }
1661 1655
1662 out:
1663 sch->flags &= ~TCQ_F_THROTTLED; 1656 sch->flags &= ~TCQ_F_THROTTLED;
1664 sch->q.qlen--; 1657 sch->q.qlen--;
1665 1658
1666 return skb; 1659 return skb;
1667} 1660}
1668 1661
1669static int
1670hfsc_requeue(struct sk_buff *skb, struct Qdisc *sch)
1671{
1672 struct hfsc_sched *q = qdisc_priv(sch);
1673
1674 __skb_queue_head(&q->requeue, skb);
1675 sch->q.qlen++;
1676 sch->qstats.requeues++;
1677 return NET_XMIT_SUCCESS;
1678}
1679
1680static unsigned int 1662static unsigned int
1681hfsc_drop(struct Qdisc *sch) 1663hfsc_drop(struct Qdisc *sch)
1682{ 1664{
@@ -1728,7 +1710,6 @@ static struct Qdisc_ops hfsc_qdisc_ops __read_mostly = {
1728 .enqueue = hfsc_enqueue, 1710 .enqueue = hfsc_enqueue,
1729 .dequeue = hfsc_dequeue, 1711 .dequeue = hfsc_dequeue,
1730 .peek = qdisc_peek_dequeued, 1712 .peek = qdisc_peek_dequeued,
1731 .requeue = hfsc_requeue,
1732 .drop = hfsc_drop, 1713 .drop = hfsc_drop,
1733 .cl_ops = &hfsc_class_ops, 1714 .cl_ops = &hfsc_class_ops,
1734 .priv_size = sizeof(struct hfsc_sched), 1715 .priv_size = sizeof(struct hfsc_sched),