Thread (4 messages) flat view 4 messages, 2 authors, 25d ago

Re: [PATCH net] amt: do not store tunnel pointer in skb control block

From: Taehee Yoo <ap420073@gmail.com>
Date: 2026-08-26 12:56:48
Also in: lkml

On Wed, Aug 26, 2026 at 1:15 PM Cen Zhang (Microsoft) [off-list ref] wrote:
Thanks for the feedback. Just getting back to this thread.

On Thu, Aug 20, 2026 at 10:18:43PM +0900, Taehee Yoo wrote:
quoted
This looks like it adds a per-packet linear scan over all tunnels,
so I'm concerned about performance when there are many tunnels.
Do you have any idea how to avoid this regression?
I see two possible approaches:

1. Keep the v1 implementation. It is the simplest fix, but changes the
   Query dequeue path from an O(1) pointer access to an O(n) lookup. I am
   not sure whether that cost is significant in practice for two reasons:
   this handles IGMP/MLD Query control packets rather than multicast data
   packets [1], while the hotter multicast data path already walks
   tunnel_list for each skb [2]; and max_tunnels defaults to 128. However,
   max_tunnels is configurable, so users can set it much higher.

2. Add a small per-device bucket hash keyed by (ip4, source_port) to [1],
   while keeping tunnel_list for multicast fan-out in [2]. This avoids
   a new linear lookup cost, but adds a second index that must be
   maintained during tunnel creation, expiry, and device teardown.
   I am not sure whether that is overkill for this fix.

I would appreciate your further feedback here and will prepare v2 after
settling on the approach.
Thanks for the investigation.

How about protecting amt_tunnel_list with a refcount?
Currently amt_tunnel_expire() frees the tunnel immediately, but with a
refcount we could just drop the reference there and let the memory be
freed once it reaches 0.

What do you think?
quoted
I think this comment is not necessary. Please remove it.
Agreed. I will remove it in v2.

[1] https://github.com/torvalds/linux/blob/0f23d56f17fdfc7db69d51f64c8b91bbab947aa9/drivers/net/amt.c#L1261
[2] https://github.com/torvalds/linux/blob/0f23d56f17fdfc7db69d51f64c8b91bbab947aa9/drivers/net/amt.c#L1276
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help