diff options
author | Yevgeny Petrilin <yevgenyp@mellanox.co.il> | 2009-06-01 23:22:18 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-02 02:29:05 -0700 |
commit | 3c2fa83f9c2bbb3e91992a2fc443b7104a07e0bc (patch) | |
tree | 4d64a8a2bd7403e841af3a650173236121c13dd6 /drivers/net/mlx4/en_main.c | |
parent | 9e47edaa1ae2efad7db0c8c7fb53e4431bb35364 (diff) | |
download | op-kernel-dev-3c2fa83f9c2bbb3e91992a2fc443b7104a07e0bc.zip op-kernel-dev-3c2fa83f9c2bbb3e91992a2fc443b7104a07e0bc.tar.gz |
mlx4_en: Work with part of the ports.
If the initialization of one of the ports failed,
there is no need to fail the other one as well.
Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/mlx4/en_main.c')
-rw-r--r-- | drivers/net/mlx4/en_main.c | 19 |
1 files changed, 1 insertions, 18 deletions
diff --git a/drivers/net/mlx4/en_main.c b/drivers/net/mlx4/en_main.c index 23955d8..b510000 100644 --- a/drivers/net/mlx4/en_main.c +++ b/drivers/net/mlx4/en_main.c @@ -248,28 +248,11 @@ static void *mlx4_en_add(struct mlx4_dev *dev) /* Create a netdev for each port */ mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) { mlx4_info(mdev, "Activating port:%d\n", i); - if (mlx4_en_init_netdev(mdev, i, &mdev->profile.prof[i])) { + if (mlx4_en_init_netdev(mdev, i, &mdev->profile.prof[i])) mdev->pndev[i] = NULL; - goto err_free_netdev; - } } return mdev; - -err_free_netdev: - mlx4_foreach_port(i, dev, MLX4_PORT_TYPE_ETH) { - if (mdev->pndev[i]) - mlx4_en_destroy_netdev(mdev->pndev[i]); - } - - mutex_lock(&mdev->state_lock); - mdev->device_up = false; - mutex_unlock(&mdev->state_lock); - flush_workqueue(mdev->workqueue); - - /* Stop event queue before we drop down to release shared SW state */ - destroy_workqueue(mdev->workqueue); - err_mr: mlx4_mr_free(dev, &mdev->mr); err_uar: |