• Majd Dibbiny's avatar
    net/mlx4_core: New init and exit flow for mlx4_core · e1c00e10
    Majd Dibbiny authored
    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: default avatarMajd Dibbiny <majd@mellanox.com>
    Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e1c00e10
main.c 82.9 KB