This is an RFC series to extend macvtap with multiple qdisc. Right now multiqueue macvtap setups suffer from lock contention. Macvtap sets the queue index and thus gets a default qdisc allocated to it. Since it later users dev_queue_xmit() call to the macvlan type device (so that we can packet captures and other filtering on macvtap itself) we end up with qdisc lock contention since what we have is multiple file descriptors writing to the same qdisc.
With this series, the macvtap device now becomes a true multi-queue device that defaults to 1 queue. Every time the user opens the device (this is how multiqueue macvtap is used), we update the number of real queues for the device. When the user writes to the device, we record the queue index associted with the file descriptor to the skb, and that ends up translating to the device queue index. This is one transmit only. Receive side is left alone and will prefer skb hash if available. Macvlan through this all is left with lockless transmit path. Thanks -vlad Vladislav Yasevich (3): macvtap: mutiple qdiscs support macvlan: add queue selection functionality macvtap: Record the rx queue based on the user tap queue drivers/net/macvlan.c | 20 ++++++++++++++++++++ drivers/net/macvtap.c | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) -- 2.1.0