mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
Revert "net/mlx4_en: Use affinity hint"
This reverts commit 70a640d0da
.
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d64eed1d9b
commit
96b2e73c54
@ -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);
|
i, j, dev->pdev->bus->name);
|
||||||
/* Set IRQ for specific name (per ring) */
|
/* Set IRQ for specific name (per ring) */
|
||||||
if (mlx4_assign_eq(dev, name, NULL,
|
if (mlx4_assign_eq(dev, name, NULL,
|
||||||
&ibdev->eq_table[eq], NULL)) {
|
&ibdev->eq_table[eq])) {
|
||||||
/* Use legacy (same as mlx4_en driver) */
|
/* Use legacy (same as mlx4_en driver) */
|
||||||
pr_warn("Can't allocate EQ %d; reverting to legacy\n", eq);
|
pr_warn("Can't allocate EQ %d; reverting to legacy\n", eq);
|
||||||
ibdev->eq_table[eq] =
|
ibdev->eq_table[eq] =
|
||||||
|
@ -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 (cq->is_tx == RX) {
|
||||||
if (mdev->dev->caps.comp_pool) {
|
if (mdev->dev->caps.comp_pool) {
|
||||||
if (!cq->vector) {
|
if (!cq->vector) {
|
||||||
struct mlx4_en_rx_ring *ring =
|
|
||||||
priv->rx_ring[cq->ring];
|
|
||||||
|
|
||||||
sprintf(name, "%s-%d", priv->dev->name,
|
sprintf(name, "%s-%d", priv->dev->name,
|
||||||
cq->ring);
|
cq->ring);
|
||||||
/* Set IRQ for specific name (per ring) */
|
/* Set IRQ for specific name (per ring) */
|
||||||
if (mlx4_assign_eq(mdev->dev, name, rmap,
|
if (mlx4_assign_eq(mdev->dev, name, rmap,
|
||||||
&cq->vector,
|
&cq->vector)) {
|
||||||
ring->affinity_mask)) {
|
|
||||||
cq->vector = (cq->ring + 1 + priv->port)
|
cq->vector = (cq->ring + 1 + priv->port)
|
||||||
% mdev->dev->caps.num_comp_vectors;
|
% mdev->dev->caps.num_comp_vectors;
|
||||||
mlx4_warn(mdev, "Failed assigning an EQ to %s, falling back to legacy EQ's\n",
|
mlx4_warn(mdev, "Failed assigning an EQ to %s, falling back to legacy EQ's\n",
|
||||||
|
@ -1526,32 +1526,6 @@ static void mlx4_en_linkstate(struct work_struct *work)
|
|||||||
mutex_unlock(&mdev->state_lock);
|
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)
|
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_cq_init_lock(cq);
|
||||||
|
|
||||||
mlx4_en_init_affinity_hint(priv, i);
|
|
||||||
|
|
||||||
err = mlx4_en_activate_cq(priv, cq, i);
|
err = mlx4_en_activate_cq(priv, cq, i);
|
||||||
if (err) {
|
if (err) {
|
||||||
en_err(priv, "Failed activating Rx CQ\n");
|
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);
|
msleep(1);
|
||||||
mlx4_en_deactivate_rx_ring(priv, priv->rx_ring[i]);
|
mlx4_en_deactivate_rx_ring(priv, priv->rx_ring[i]);
|
||||||
mlx4_en_deactivate_cq(priv, cq);
|
mlx4_en_deactivate_cq(priv, cq);
|
||||||
|
|
||||||
mlx4_en_free_affinity_hint(priv, i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1376,7 +1376,7 @@ int mlx4_test_interrupts(struct mlx4_dev *dev)
|
|||||||
EXPORT_SYMBOL(mlx4_test_interrupts);
|
EXPORT_SYMBOL(mlx4_test_interrupts);
|
||||||
|
|
||||||
int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap,
|
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);
|
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,
|
mlx4_assign_irq_notifier(priv, dev,
|
||||||
priv->eq_table.eq[vec].irq);
|
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);
|
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(
|
irq_set_affinity_notifier(
|
||||||
priv->eq_table.eq[vec].irq,
|
priv->eq_table.eq[vec].irq,
|
||||||
NULL);
|
NULL);
|
||||||
irq_set_affinity_hint(priv->eq_table.eq[vec].irq,
|
|
||||||
NULL);
|
|
||||||
free_irq(priv->eq_table.eq[vec].irq,
|
free_irq(priv->eq_table.eq[vec].irq,
|
||||||
&priv->eq_table.eq[vec]);
|
&priv->eq_table.eq[vec]);
|
||||||
priv->msix_ctl.pool_bm &= ~(1ULL << i);
|
priv->msix_ctl.pool_bm &= ~(1ULL << i);
|
||||||
|
@ -313,7 +313,6 @@ struct mlx4_en_rx_ring {
|
|||||||
unsigned long csum_ok;
|
unsigned long csum_ok;
|
||||||
unsigned long csum_none;
|
unsigned long csum_none;
|
||||||
int hwtstamp_rx_filter;
|
int hwtstamp_rx_filter;
|
||||||
cpumask_var_t affinity_mask;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mlx4_en_cq {
|
struct mlx4_en_cq {
|
||||||
|
@ -1161,7 +1161,7 @@ int mlx4_fmr_free(struct mlx4_dev *dev, struct mlx4_fmr *fmr);
|
|||||||
int mlx4_SYNC_TPT(struct mlx4_dev *dev);
|
int mlx4_SYNC_TPT(struct mlx4_dev *dev);
|
||||||
int mlx4_test_interrupts(struct mlx4_dev *dev);
|
int mlx4_test_interrupts(struct mlx4_dev *dev);
|
||||||
int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap,
|
int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap,
|
||||||
int *vector, cpumask_t *cpu_hint_mask);
|
int *vector);
|
||||||
void mlx4_release_eq(struct mlx4_dev *dev, int vec);
|
void mlx4_release_eq(struct mlx4_dev *dev, int vec);
|
||||||
|
|
||||||
int mlx4_get_phys_port_id(struct mlx4_dev *dev);
|
int mlx4_get_phys_port_id(struct mlx4_dev *dev);
|
||||||
|
Loading…
Reference in New Issue
Block a user