Delete the driver CPU affinity info and use the core's napi config
instead.

Cc: [email protected]
Signed-off-by: Ahmed Zaki <[email protected]>
---
 drivers/net/ethernet/intel/idpf/idpf_txrx.c | 18 ++++--------------
 drivers/net/ethernet/intel/idpf/idpf_txrx.h |  6 ++----
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c 
b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
index da2a5becf62f..ffa75a98cdc6 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
@@ -3553,8 +3553,6 @@ void idpf_vport_intr_rel(struct idpf_vport *vport)
                q_vector->tx = NULL;
                kfree(q_vector->rx);
                q_vector->rx = NULL;
-
-               free_cpumask_var(q_vector->affinity_mask);
        }
 
        kfree(vport->q_vectors);
@@ -3581,8 +3579,6 @@ static void idpf_vport_intr_rel_irq(struct idpf_vport 
*vport)
                vidx = vport->q_vector_idxs[vector];
                irq_num = adapter->msix_entries[vidx].vector;
 
-               /* clear the affinity_mask in the IRQ descriptor */
-               irq_set_affinity_hint(irq_num, NULL);
                kfree(free_irq(irq_num, q_vector));
        }
 }
@@ -3761,8 +3757,6 @@ static int idpf_vport_intr_req_irq(struct idpf_vport 
*vport)
                                   "Request_irq failed, error: %d\n", err);
                        goto free_q_irqs;
                }
-               /* assign the mask for this irq */
-               irq_set_affinity_hint(irq_num, q_vector->affinity_mask);
        }
 
        return 0;
@@ -4183,12 +4177,11 @@ static void idpf_vport_intr_napi_add_all(struct 
idpf_vport *vport)
 
        for (v_idx = 0; v_idx < vport->num_q_vectors; v_idx++) {
                struct idpf_q_vector *q_vector = &vport->q_vectors[v_idx];
+               int irq_num = vport->adapter->msix_entries[v_idx].vector;
 
-               netif_napi_add(vport->netdev, &q_vector->napi, napi_poll);
-
-               /* only set affinity_mask if the CPU is online */
-               if (cpu_online(v_idx))
-                       cpumask_set_cpu(v_idx, q_vector->affinity_mask);
+               netif_napi_add_config(vport->netdev, &q_vector->napi,
+                                     napi_poll, v_idx);
+               netif_napi_set_irq(&q_vector->napi, irq_num);
        }
 }
 
@@ -4232,9 +4225,6 @@ int idpf_vport_intr_alloc(struct idpf_vport *vport)
                q_vector->rx_intr_mode = IDPF_ITR_DYNAMIC;
                q_vector->rx_itr_idx = VIRTCHNL2_ITR_IDX_0;
 
-               if (!zalloc_cpumask_var(&q_vector->affinity_mask, GFP_KERNEL))
-                       goto error;
-
                q_vector->tx = kcalloc(txqs_per_vector, sizeof(*q_vector->tx),
                                       GFP_KERNEL);
                if (!q_vector->tx)
diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.h 
b/drivers/net/ethernet/intel/idpf/idpf_txrx.h
index 9c1fe84108ed..5efb3402b378 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.h
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.h
@@ -397,7 +397,6 @@ struct idpf_intr_reg {
  * @rx_intr_mode: Dynamic ITR or not
  * @rx_itr_idx: RX ITR index
  * @v_idx: Vector index
- * @affinity_mask: CPU affinity mask
  */
 struct idpf_q_vector {
        __cacheline_group_begin_aligned(read_mostly);
@@ -434,13 +433,12 @@ struct idpf_q_vector {
        __cacheline_group_begin_aligned(cold);
        u16 v_idx;
 
-       cpumask_var_t affinity_mask;
        __cacheline_group_end_aligned(cold);
 };
 libeth_cacheline_set_assert(struct idpf_q_vector, 112,
                            24 + sizeof(struct napi_struct) +
                            2 * sizeof(struct dim),
-                           8 + sizeof(cpumask_var_t));
+                           8);
 
 struct idpf_rx_queue_stats {
        u64_stats_t packets;
@@ -934,7 +932,7 @@ static inline int idpf_q_vector_to_mem(const struct 
idpf_q_vector *q_vector)
        if (!q_vector)
                return NUMA_NO_NODE;
 
-       cpu = cpumask_first(q_vector->affinity_mask);
+       cpu = cpumask_first(&q_vector->napi.config->affinity_mask);
 
        return cpu < nr_cpu_ids ? cpu_to_mem(cpu) : NUMA_NO_NODE;
 }
-- 
2.47.0

Reply via email to