hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/sched/sch_taprio.c
....@@ -1621,6 +1621,7 @@
16211621 int i;
16221622
16231623 hrtimer_cancel(&q->advance_timer);
1624
+
16241625 if (q->qdiscs) {
16251626 for (i = 0; i < dev->num_tx_queues; i++)
16261627 if (q->qdiscs[i])
....@@ -1642,6 +1643,7 @@
16421643 * happens in qdisc_create(), after taprio_init() has been called.
16431644 */
16441645 hrtimer_cancel(&q->advance_timer);
1646
+ qdisc_synchronize(sch);
16451647
16461648 taprio_disable_offload(dev, q, NULL);
16471649
....@@ -1904,14 +1906,12 @@
19041906
19051907 static struct Qdisc *taprio_leaf(struct Qdisc *sch, unsigned long cl)
19061908 {
1907
- struct taprio_sched *q = qdisc_priv(sch);
1908
- struct net_device *dev = qdisc_dev(sch);
1909
- unsigned int ntx = cl - 1;
1909
+ struct netdev_queue *dev_queue = taprio_queue_get(sch, cl);
19101910
1911
- if (ntx >= dev->num_tx_queues)
1911
+ if (!dev_queue)
19121912 return NULL;
19131913
1914
- return q->qdiscs[ntx];
1914
+ return dev_queue->qdisc_sleeping;
19151915 }
19161916
19171917 static unsigned long taprio_find(struct Qdisc *sch, u32 classid)