Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96b2e73c authored by David S. Miller's avatar David S. Miller
Browse files

Revert "net/mlx4_en: Use affinity hint"



This reverts commit 70a640d0.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d64eed1d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1897,7 +1897,7 @@ static void mlx4_ib_alloc_eqs(struct mlx4_dev *dev, struct mlx4_ib_dev *ibdev)
				 i, j, dev->pdev->bus->name);
			/* Set IRQ for specific name (per ring) */
			if (mlx4_assign_eq(dev, name, NULL,
					   &ibdev->eq_table[eq], NULL)) {
					   &ibdev->eq_table[eq])) {
				/* Use legacy (same as mlx4_en driver) */
				pr_warn("Can't allocate EQ %d; reverting to legacy\n", eq);
				ibdev->eq_table[eq] =
+1 −5
Original line number Diff line number Diff line
@@ -118,15 +118,11 @@ int mlx4_en_activate_cq(struct mlx4_en_priv *priv, struct mlx4_en_cq *cq,
	if (cq->is_tx == RX) {
		if (mdev->dev->caps.comp_pool) {
			if (!cq->vector) {
				struct mlx4_en_rx_ring *ring =
					priv->rx_ring[cq->ring];

				sprintf(name, "%s-%d", priv->dev->name,
					cq->ring);
				/* Set IRQ for specific name (per ring) */
				if (mlx4_assign_eq(mdev->dev, name, rmap,
						   &cq->vector,
						   ring->affinity_mask)) {
						   &cq->vector)) {
					cq->vector = (cq->ring + 1 + priv->port)
					    % mdev->dev->caps.num_comp_vectors;
					mlx4_warn(mdev, "Failed assigning an EQ to %s, falling back to legacy EQ's\n",
+0 −30
Original line number Diff line number Diff line
@@ -1526,32 +1526,6 @@ static void mlx4_en_linkstate(struct work_struct *work)
	mutex_unlock(&mdev->state_lock);
}

static void mlx4_en_init_affinity_hint(struct mlx4_en_priv *priv, int ring_idx)
{
	struct mlx4_en_rx_ring *ring = priv->rx_ring[ring_idx];
	int numa_node = priv->mdev->dev->numa_node;

	if (numa_node == -1)
		return;

	if (!zalloc_cpumask_var(&ring->affinity_mask, GFP_KERNEL)) {
		en_err(priv, "Failed to allocate core mask\n");
		return;
	}

	if (cpumask_set_cpu_local_first(ring_idx, numa_node,
					ring->affinity_mask)) {
		en_err(priv, "Failed setting affinity hint\n");
		free_cpumask_var(ring->affinity_mask);
		ring->affinity_mask = NULL;
	}
}

static void mlx4_en_free_affinity_hint(struct mlx4_en_priv *priv, int ring_idx)
{
	free_cpumask_var(priv->rx_ring[ring_idx]->affinity_mask);
	priv->rx_ring[ring_idx]->affinity_mask = NULL;
}

int mlx4_en_start_port(struct net_device *dev)
{
@@ -1593,8 +1567,6 @@ int mlx4_en_start_port(struct net_device *dev)

		mlx4_en_cq_init_lock(cq);

		mlx4_en_init_affinity_hint(priv, i);

		err = mlx4_en_activate_cq(priv, cq, i);
		if (err) {
			en_err(priv, "Failed activating Rx CQ\n");
@@ -1875,8 +1847,6 @@ void mlx4_en_stop_port(struct net_device *dev, int detach)
			msleep(1);
		mlx4_en_deactivate_rx_ring(priv, priv->rx_ring[i]);
		mlx4_en_deactivate_cq(priv, cq);

		mlx4_en_free_affinity_hint(priv, i);
	}
}

+1 −12
Original line number Diff line number Diff line
@@ -1376,7 +1376,7 @@ int mlx4_test_interrupts(struct mlx4_dev *dev)
EXPORT_SYMBOL(mlx4_test_interrupts);

int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap,
		   int *vector, cpumask_var_t cpu_hint_mask)
		   int *vector)
{

	struct mlx4_priv *priv = mlx4_priv(dev);
@@ -1411,15 +1411,6 @@ int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap,
			}
			mlx4_assign_irq_notifier(priv, dev,
						 priv->eq_table.eq[vec].irq);
			if (cpu_hint_mask) {
				err = irq_set_affinity_hint(
						priv->eq_table.eq[vec].irq,
						cpu_hint_mask);
				if (err) {
					mlx4_warn(dev, "Failed setting affinity hint\n");
					/*we dont want to break here*/
				}
			}

			eq_set_ci(&priv->eq_table.eq[vec], 1);
		}
@@ -1450,8 +1441,6 @@ void mlx4_release_eq(struct mlx4_dev *dev, int vec)
			irq_set_affinity_notifier(
				priv->eq_table.eq[vec].irq,
				NULL);
			irq_set_affinity_hint(priv->eq_table.eq[vec].irq,
					      NULL);
			free_irq(priv->eq_table.eq[vec].irq,
				 &priv->eq_table.eq[vec]);
			priv->msix_ctl.pool_bm &= ~(1ULL << i);
+0 −1
Original line number Diff line number Diff line
@@ -313,7 +313,6 @@ struct mlx4_en_rx_ring {
	unsigned long csum_ok;
	unsigned long csum_none;
	int hwtstamp_rx_filter;
	cpumask_var_t affinity_mask;
};

struct mlx4_en_cq {
Loading