• Vladimir Oltean's avatar
    net/sched: taprio: try again to report q->qdiscs[] to qdisc_leaf() · 98766add
    Vladimir Oltean authored
    This is another stab at commit 1461d212 ("net/sched: taprio: make
    qdisc_leaf() see the per-netdev-queue pfifo child qdiscs"), later
    reverted in commit af7b29b1 ("Revert "net/sched: taprio: make
    qdisc_leaf() see the per-netdev-queue pfifo child qdiscs"").
    
    I believe that the problems that caused the revert were fixed, and thus,
    this change is identical to the original patch.
    
    Its purpose is to properly reject attaching a software taprio child
    qdisc to a software taprio parent. Because unoffloaded taprio currently
    reports itself (the root Qdisc) as the return value from qdisc_leaf(),
    then the process of attaching another taprio as child to a Qdisc class
    of the root will just result in a Qdisc_ops :: change() call for the
    root. Whereas that's not we want. We want Qdisc_ops :: init() to be
    called for the taprio child, in order to give the taprio child a chance
    to check whether its sch->parent is TC_H_ROOT or not (and reject this
    configuration).
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20230807193324.4128292-4-vladimir.oltean@nxp.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    98766add
sch_taprio.c 66.3 KB