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.

Reply via email to