diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/catas.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/main.c | 25 | ||||
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/mlx4.h | 3 |
3 files changed, 23 insertions, 7 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/catas.c b/drivers/net/ethernet/mellanox/mlx4/catas.c index 87e90b5d4d7d..5b11557f1ae4 100644 --- a/drivers/net/ethernet/mellanox/mlx4/catas.c +++ b/drivers/net/ethernet/mellanox/mlx4/catas.c | |||
| @@ -210,7 +210,7 @@ static void mlx4_handle_error_state(struct mlx4_dev_persistent *persist) | |||
| 210 | mutex_lock(&persist->interface_state_mutex); | 210 | mutex_lock(&persist->interface_state_mutex); |
| 211 | if (persist->interface_state & MLX4_INTERFACE_STATE_UP && | 211 | if (persist->interface_state & MLX4_INTERFACE_STATE_UP && |
| 212 | !(persist->interface_state & MLX4_INTERFACE_STATE_DELETION)) { | 212 | !(persist->interface_state & MLX4_INTERFACE_STATE_DELETION)) { |
| 213 | err = mlx4_restart_one(persist->pdev, false, NULL); | 213 | err = mlx4_restart_one(persist->pdev); |
| 214 | mlx4_info(persist->dev, "mlx4_restart_one was ended, ret=%d\n", | 214 | mlx4_info(persist->dev, "mlx4_restart_one was ended, ret=%d\n", |
| 215 | err); | 215 | err); |
| 216 | } | 216 | } |
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c index 07c204bd3fc4..a39c647c12dc 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c | |||
| @@ -3931,6 +3931,10 @@ static void mlx4_devlink_param_load_driverinit_values(struct devlink *devlink) | |||
| 3931 | } | 3931 | } |
| 3932 | } | 3932 | } |
| 3933 | 3933 | ||
| 3934 | static void mlx4_restart_one_down(struct pci_dev *pdev); | ||
| 3935 | static int mlx4_restart_one_up(struct pci_dev *pdev, bool reload, | ||
| 3936 | struct devlink *devlink); | ||
| 3937 | |||
| 3934 | static int mlx4_devlink_reload(struct devlink *devlink, | 3938 | static int mlx4_devlink_reload(struct devlink *devlink, |
| 3935 | struct netlink_ext_ack *extack) | 3939 | struct netlink_ext_ack *extack) |
| 3936 | { | 3940 | { |
| @@ -3941,9 +3945,11 @@ static int mlx4_devlink_reload(struct devlink *devlink, | |||
| 3941 | 3945 | ||
| 3942 | if (persist->num_vfs) | 3946 | if (persist->num_vfs) |
| 3943 | mlx4_warn(persist->dev, "Reload performed on PF, will cause reset on operating Virtual Functions\n"); | 3947 | mlx4_warn(persist->dev, "Reload performed on PF, will cause reset on operating Virtual Functions\n"); |
| 3944 | err = mlx4_restart_one(persist->pdev, true, devlink); | 3948 | mlx4_restart_one_down(persist->pdev); |
| 3949 | err = mlx4_restart_one_up(persist->pdev, true, devlink); | ||
| 3945 | if (err) | 3950 | if (err) |
| 3946 | mlx4_err(persist->dev, "mlx4_restart_one failed, ret=%d\n", err); | 3951 | mlx4_err(persist->dev, "mlx4_restart_one_up failed, ret=%d\n", |
| 3952 | err); | ||
| 3947 | 3953 | ||
| 3948 | return err; | 3954 | return err; |
| 3949 | } | 3955 | } |
| @@ -4163,7 +4169,13 @@ static int restore_current_port_types(struct mlx4_dev *dev, | |||
| 4163 | return err; | 4169 | return err; |
| 4164 | } | 4170 | } |
| 4165 | 4171 | ||
| 4166 | int mlx4_restart_one(struct pci_dev *pdev, bool reload, struct devlink *devlink) | 4172 | static void mlx4_restart_one_down(struct pci_dev *pdev) |
| 4173 | { | ||
| 4174 | mlx4_unload_one(pdev); | ||
| 4175 | } | ||
| 4176 | |||
| 4177 | static int mlx4_restart_one_up(struct pci_dev *pdev, bool reload, | ||
| 4178 | struct devlink *devlink) | ||
| 4167 | { | 4179 | { |
| 4168 | struct mlx4_dev_persistent *persist = pci_get_drvdata(pdev); | 4180 | struct mlx4_dev_persistent *persist = pci_get_drvdata(pdev); |
| 4169 | struct mlx4_dev *dev = persist->dev; | 4181 | struct mlx4_dev *dev = persist->dev; |
| @@ -4175,7 +4187,6 @@ int mlx4_restart_one(struct pci_dev *pdev, bool reload, struct devlink *devlink) | |||
| 4175 | total_vfs = dev->persist->num_vfs; | 4187 | total_vfs = dev->persist->num_vfs; |
| 4176 | memcpy(nvfs, dev->persist->nvfs, sizeof(dev->persist->nvfs)); | 4188 | memcpy(nvfs, dev->persist->nvfs, sizeof(dev->persist->nvfs)); |
| 4177 | 4189 | ||
| 4178 | mlx4_unload_one(pdev); | ||
| 4179 | if (reload) | 4190 | if (reload) |
| 4180 | mlx4_devlink_param_load_driverinit_values(devlink); | 4191 | mlx4_devlink_param_load_driverinit_values(devlink); |
| 4181 | err = mlx4_load_one(pdev, pci_dev_data, total_vfs, nvfs, priv, 1); | 4192 | err = mlx4_load_one(pdev, pci_dev_data, total_vfs, nvfs, priv, 1); |
| @@ -4194,6 +4205,12 @@ int mlx4_restart_one(struct pci_dev *pdev, bool reload, struct devlink *devlink) | |||
| 4194 | return err; | 4205 | return err; |
| 4195 | } | 4206 | } |
| 4196 | 4207 | ||
| 4208 | int mlx4_restart_one(struct pci_dev *pdev) | ||
| 4209 | { | ||
| 4210 | mlx4_restart_one_down(pdev); | ||
| 4211 | return mlx4_restart_one_up(pdev, false, NULL); | ||
| 4212 | } | ||
| 4213 | |||
| 4197 | #define MLX_SP(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_FORCE_SENSE_PORT } | 4214 | #define MLX_SP(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_FORCE_SENSE_PORT } |
| 4198 | #define MLX_VF(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_IS_VF } | 4215 | #define MLX_VF(id) { PCI_VDEVICE(MELLANOX, id), MLX4_PCI_DEV_IS_VF } |
| 4199 | #define MLX_GN(id) { PCI_VDEVICE(MELLANOX, id), 0 } | 4216 | #define MLX_GN(id) { PCI_VDEVICE(MELLANOX, id), 0 } |
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4.h b/drivers/net/ethernet/mellanox/mlx4/mlx4.h index 23f1b5b512c2..527b52e48276 100644 --- a/drivers/net/ethernet/mellanox/mlx4/mlx4.h +++ b/drivers/net/ethernet/mellanox/mlx4/mlx4.h | |||
| @@ -1043,8 +1043,7 @@ int mlx4_catas_init(struct mlx4_dev *dev); | |||
| 1043 | void mlx4_catas_end(struct mlx4_dev *dev); | 1043 | void mlx4_catas_end(struct mlx4_dev *dev); |
| 1044 | int mlx4_crdump_init(struct mlx4_dev *dev); | 1044 | int mlx4_crdump_init(struct mlx4_dev *dev); |
| 1045 | void mlx4_crdump_end(struct mlx4_dev *dev); | 1045 | void mlx4_crdump_end(struct mlx4_dev *dev); |
| 1046 | int mlx4_restart_one(struct pci_dev *pdev, bool reload, | 1046 | int mlx4_restart_one(struct pci_dev *pdev); |
| 1047 | struct devlink *devlink); | ||
| 1048 | int mlx4_register_device(struct mlx4_dev *dev); | 1047 | int mlx4_register_device(struct mlx4_dev *dev); |
| 1049 | void mlx4_unregister_device(struct mlx4_dev *dev); | 1048 | void mlx4_unregister_device(struct mlx4_dev *dev); |
| 1050 | void mlx4_dispatch_event(struct mlx4_dev *dev, enum mlx4_dev_event type, | 1049 | void mlx4_dispatch_event(struct mlx4_dev *dev, enum mlx4_dev_event type, |
