int xdp_count, int xdp_idx,
                                int rxr_count, int rxr_idx)
 {
+       int node = dev_to_node(&adapter->pdev->dev);
        struct ixgbe_q_vector *q_vector;
        struct ixgbe_ring *ring;
-       int node = NUMA_NO_NODE;
        int cpu = -1;
        int ring_count;
        u8 tcs = adapter->hw_tcs;
        if ((tcs <= 1) && !(adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)) {
                u16 rss_i = adapter->ring_feature[RING_F_RSS].indices;
                if (rss_i > 1 && adapter->atr_sample_rate) {
-                       if (cpu_online(v_idx)) {
-                               cpu = v_idx;
-                               node = cpu_to_node(cpu);
-                       }
+                       cpu = cpumask_local_spread(v_idx, node);
+                       node = cpu_to_node(cpu);
                }
        }