| From a229e488ac3f904d06c20d8d3f47831db3c7a15a Mon Sep 17 00:00:00 2001 |
| From: Amir Vadai <amirv@mellanox.com> |
| Date: Thu, 7 Mar 2013 03:46:57 +0000 |
| Subject: net/mlx4_en: Disable RFS when running in SRIOV mode |
| |
| From: Amir Vadai <amirv@mellanox.com> |
| |
| commit a229e488ac3f904d06c20d8d3f47831db3c7a15a upstream. |
| |
| Commit 37706996 "mlx4_en: fix allocation of CPU affinity reverse-map" fixed |
| a bug when mlx4_dev->caps.comp_pool is larger from the device rx rings, but |
| introduced a regression. |
| |
| When the mlx4_core is activating its "legacy mode" (e.g when running in SRIOV |
| mode) w.r.t to EQs/IRQs usage, comp_pool becomes zero and we're crashing on |
| divide by zero alloc_cpu_rmap. |
| |
| Fix that by enabling RFS only when running in non-legacy mode. |
| |
| Reported-by: Yan Burman <yanb@mellanox.com> |
| Cc: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com> |
| Signed-off-by: Amir Vadai <amirv@mellanox.com> |
| Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c |
| +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c |
| @@ -1434,9 +1434,11 @@ int mlx4_en_alloc_resources(struct mlx4_ |
| } |
| |
| #ifdef CONFIG_RFS_ACCEL |
| - priv->dev->rx_cpu_rmap = alloc_irq_cpu_rmap(priv->mdev->dev->caps.comp_pool); |
| - if (!priv->dev->rx_cpu_rmap) |
| - goto err; |
| + if (priv->mdev->dev->caps.comp_pool) { |
| + priv->dev->rx_cpu_rmap = alloc_irq_cpu_rmap(priv->mdev->dev->caps.comp_pool); |
| + if (!priv->dev->rx_cpu_rmap) |
| + goto err; |
| + } |
| #endif |
| |
| return 0; |