diff options
author | Arkadi Sharshevsky <arkadis@mellanox.com> | 2018-01-15 08:59:11 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-16 14:15:35 -0500 |
commit | 24cc68ad6c46f04f0206b41359e7af84e6dbde98 (patch) | |
tree | 1fcadd8fa956bddef4496c558599d3c693542565 /drivers/net/ethernet/mellanox/mlxsw/i2c.c | |
parent | e21d21ca31f2fec31f9359a2209929a32a5faf9f (diff) | |
download | linux-stable-24cc68ad6c46f04f0206b41359e7af84e6dbde98.tar.gz linux-stable-24cc68ad6c46f04f0206b41359e7af84e6dbde98.tar.bz2 linux-stable-24cc68ad6c46f04f0206b41359e7af84e6dbde98.zip |
mlxsw: core: Add support for reload
Add support for hot reload. First, all the driver/core resources are
released but the PCI and devlink instances, then reset is performed
through the PCI interface. Finally the driver performs initialization.
In case of reload failure the driver is left in a partially initialized
state. Special care is taken during the driver removal in order to
properly handle this state.
Signed-off-by: Arkadi Sharshevsky <arkadis@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlxsw/i2c.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/i2c.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c b/drivers/net/ethernet/mellanox/mlxsw/i2c.c index c0dcfa05b077..25f9915ebd82 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c +++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c @@ -539,7 +539,8 @@ static int mlxsw_i2c_probe(struct i2c_client *client, mlxsw_i2c->dev = &client->dev; err = mlxsw_core_bus_device_register(&mlxsw_i2c->bus_info, - &mlxsw_i2c_bus, mlxsw_i2c); + &mlxsw_i2c_bus, mlxsw_i2c, false, + NULL); if (err) { dev_err(&client->dev, "Fail to register core bus\n"); return err; @@ -557,7 +558,7 @@ static int mlxsw_i2c_remove(struct i2c_client *client) { struct mlxsw_i2c *mlxsw_i2c = i2c_get_clientdata(client); - mlxsw_core_bus_device_unregister(mlxsw_i2c->core); + mlxsw_core_bus_device_unregister(mlxsw_i2c->core, false); mutex_destroy(&mlxsw_i2c->cmd.lock); return 0; |