mlx4_en: Work with part of the ports.
Yevgeny Petrilin [Mon, 1 Jun 2009 23:22:18 +0000 (23:22 +0000)]
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>

drivers/net/mlx4/en_main.c

index 23955d8..b510000 100644 (file)
@@ -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: