On 2024-12-19 8:42 p.m., Jakub Kicinski wrote:
On Wed, 18 Dec 2024 09:58:39 -0700 Ahmed Zaki wrote:+ if (!glue_created && flags & NAPIF_IRQ_AFFINITY) { + glue = kzalloc(sizeof(*glue), GFP_KERNEL); + if (!glue) + return; + glue->notify.notify = netif_irq_cpu_rmap_notify; + glue->notify.release = netif_napi_affinity_release; + glue->data = napi; + glue->rmap = NULL; + napi->irq_flags |= NAPIF_IRQ_NORMAP;Why allocate the glue? is it not possible to add the fields: struct irq_affinity_notify notify; u16 index; to struct napi_struct ?
In the first branch of "if", the cb function netif_irq_cpu_rmap_notify() is also passed to irq_cpu_rmap_add() where the irq notifier is embedded in "struct irq_glue".
I think this cannot be changed as long as some drivers are directly calling irq_cpu_rmap_add() instead of the proposed API.
