On Tue, 15 Dec 2020 09:42:11 +0200 Maxim Mikityanskiy wrote: > + q->offload = nla_get_flag(tb[TCA_HTB_OFFLOAD]); > + > + if (q->offload) { > + if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc) > + return -EOPNOTSUPP;
Is there a check somewhere making sure this is the root? > + q->num_direct_qdiscs = dev->real_num_tx_queues; Why real_num_tx_queues? How do you handle queue count changes? > + q->direct_qdiscs = kcalloc(q->num_direct_qdiscs, > + sizeof(*q->direct_qdiscs), > + GFP_KERNEL); > + if (!q->direct_qdiscs) > + return -ENOMEM; > + } I can't quite parse after 20 minutes of staring at this code what the relationship between the device queues and classes is. Is there any relationship between real_num_tx_queues and classes?