|
@@ -2881,7 +2881,7 @@ static void i40e_config_xps_tx_ring(struct i40e_ring *ring)
|
|
|
if ((vsi->tc_config.numtc <= 1) &&
|
|
|
!test_and_set_bit(__I40E_TX_XPS_INIT_DONE, &ring->state)) {
|
|
|
netif_set_xps_queue(ring->netdev,
|
|
|
- &ring->q_vector->affinity_mask,
|
|
|
+ get_cpu_mask(ring->q_vector->v_idx),
|
|
|
ring->queue_index);
|
|
|
}
|
|
|
|
|
@@ -3506,8 +3506,10 @@ static int i40e_vsi_request_irq_msix(struct i40e_vsi *vsi, char *basename)
|
|
|
q_vector->affinity_notify.notify = i40e_irq_affinity_notify;
|
|
|
q_vector->affinity_notify.release = i40e_irq_affinity_release;
|
|
|
irq_set_affinity_notifier(irq_num, &q_vector->affinity_notify);
|
|
|
- /* assign the mask for this irq */
|
|
|
- irq_set_affinity_hint(irq_num, &q_vector->affinity_mask);
|
|
|
+ /* get_cpu_mask returns a static constant mask with
|
|
|
+ * a permanent lifetime so it's ok to use here.
|
|
|
+ */
|
|
|
+ irq_set_affinity_hint(irq_num, get_cpu_mask(q_vector->v_idx));
|
|
|
}
|
|
|
|
|
|
vsi->irqs_ready = true;
|
|
@@ -4289,7 +4291,7 @@ static void i40e_vsi_free_irq(struct i40e_vsi *vsi)
|
|
|
|
|
|
/* clear the affinity notifier in the IRQ descriptor */
|
|
|
irq_set_affinity_notifier(irq_num, NULL);
|
|
|
- /* clear the affinity_mask in the IRQ descriptor */
|
|
|
+ /* remove our suggested affinity mask for this IRQ */
|
|
|
irq_set_affinity_hint(irq_num, NULL);
|
|
|
synchronize_irq(irq_num);
|
|
|
free_irq(irq_num, vsi->q_vectors[i]);
|
|
@@ -8235,7 +8237,7 @@ static int i40e_vsi_alloc_q_vector(struct i40e_vsi *vsi, int v_idx, int cpu)
|
|
|
|
|
|
q_vector->vsi = vsi;
|
|
|
q_vector->v_idx = v_idx;
|
|
|
- cpumask_set_cpu(cpu, &q_vector->affinity_mask);
|
|
|
+ cpumask_copy(&q_vector->affinity_mask, cpu_possible_mask);
|
|
|
|
|
|
if (vsi->netdev)
|
|
|
netif_napi_add(vsi->netdev, &q_vector->napi,
|