net/mlx4_core: New init and exit flow for mlx4_core
authorMajd Dibbiny <majd@mellanox.com>
Tue, 30 Sep 2014 09:03:48 +0000 (12:03 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 Sep 2014 20:27:49 +0000 (16:27 -0400)
commite1c00e10e92c04aa637126db2e59b092bd4878f8
tree6a66e7de924410c7b7ea0d2d3b36757a78d9bd44
parentbbb07af4cdfd0c154db4c636927bd262f71c6401
net/mlx4_core: New init and exit flow for mlx4_core

In the new flow, we separate the pci initialization and teardown
from the initialization and teardown of the other resources.

__mlx4_init_one handles the pci resources initialization. It then
calls mlx4_load_one to initialize the remainder of the resources.

When removing a device, mlx4_remove_one is invoked. However, now
mlx4_remove_one calls mlx4_unload_one to free all the resources except the pci
resources. When mlx4_unload_one returns, mlx4_remove_one then frees the
pci resources.

The above separation will allow us to implement 'reset flow' in the future.
It will also enable more EQs for VFs and is a pre-step to the modern API to
enable/disable SRIOV.

Also added nvfs; an integer array of size MLX4_MAX_PORTS + 1; to the mlx4_dev
struct. This new field is used to avoid parsing the num_vfs module parameter
each time the mlx4_restart_one is called.

Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/main.c
include/linux/mlx4/device.h