ixgbe: Use irq_update_affinity_hint()
authorNitesh Narayan Lal <nitesh@redhat.com>
Fri, 3 Sep 2021 15:24:25 +0000 (11:24 -0400)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 10 Dec 2021 19:47:39 +0000 (20:47 +0100)
The driver uses irq_set_affinity_hint() to update the affinity_hint mask
that is consumed by the userspace to distribute the interrupts. However,
under the hood irq_set_affinity_hint() also applies the provided cpumask
(if not NULL) as the affinity for the given interrupt which is an
undocumented side effect.

To remove this side effect irq_set_affinity_hint() has been marked
as deprecated and new interfaces have been introduced. Hence, replace the
irq_set_affinity_hint() with the new interface irq_update_affinity_hint()
that only updates the affinity_hint pointer.

Signed-off-by: Nitesh Narayan Lal <nitesh@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Link: https://lore.kernel.org/r/20210903152430.244937-10-nitesh@redhat.com
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c

index 0f9f022..66068e1 100644 (file)
@@ -3247,8 +3247,8 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
                /* If Flow Director is enabled, set interrupt affinity */
                if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
                        /* assign the mask for this irq */
-                       irq_set_affinity_hint(entry->vector,
-                                             &q_vector->affinity_mask);
+                       irq_update_affinity_hint(entry->vector,
+                                                &q_vector->affinity_mask);
                }
        }
 
@@ -3264,8 +3264,8 @@ static int ixgbe_request_msix_irqs(struct ixgbe_adapter *adapter)
 free_queue_irqs:
        while (vector) {
                vector--;
-               irq_set_affinity_hint(adapter->msix_entries[vector].vector,
-                                     NULL);
+               irq_update_affinity_hint(adapter->msix_entries[vector].vector,
+                                        NULL);
                free_irq(adapter->msix_entries[vector].vector,
                         adapter->q_vector[vector]);
        }
@@ -3398,7 +3398,7 @@ static void ixgbe_free_irq(struct ixgbe_adapter *adapter)
                        continue;
 
                /* clear the affinity_mask in the IRQ descriptor */
-               irq_set_affinity_hint(entry->vector, NULL);
+               irq_update_affinity_hint(entry->vector, NULL);
 
                free_irq(entry->vector, q_vector);
        }