Re: [net-next v1 1/2] net: sched: use queue_mapping to pick tx queue
flat view
From: Tonghao Zhang <hidden>
Date: 2021-12-07 03:23:09
On Tue, Dec 7, 2021 at 10:33 AM Jakub Kicinski [off-list ref] wrote:
On Tue, 7 Dec 2021 10:10:22 +0800 Tonghao Zhang wrote:quoted
quoted
In general recording the decision in the skb seems a little heavy handed. We just need to carry the information from the egress hook to the queue selection a few lines below. Or in fact maybe egressYes, we can refactor netdev_core_pick_tx to 1. select queue_index and invoke skb_set_queue_mapping, but don't return the txq. 2. after egress hook, use skb_get_queue_mapping/netdev_get_tx_queue to get txq.I'm not sure that's what I meant, I meant the information you need to store does not need to be stored in the skb, you can pass a pointer to a stack variable to both egress handling and pick_tx.
Thanks, I got it. I think we store the txq index in skb->queue_mapping better. because in egress hook, act_skbedit/act_bpf can change the skb queue_mapping. Then we can pick_tx depending on queue_mapping.
quoted
quoted
hook shouldn't be used for this in the first place, and we need a more appropriate root qdisc than simple mq?I have no idea about mq, I think clsact may make the things more flexible. and act_bpf can also support to change sk queue_mapping. queue_mapping was included in __sk_buff.Qdiscs can run a classifier to select a sub-queue. The advantage of the classifier run by the Qdisc is that it runs after pick_tx.
Yes, we should consider the qdisc lock too. Qdisc lock may affect performance and latency when running a classifier in Qdisc and clsact is outside of qdisc. -- Best regards, Tonghao