Tue, Sep 15, 2020 at 02:44:02PM CEST, moshe@xxxxxxxxxx wrote:
On 9/14/2020 4:54 PM, Jiri Pirko wrote:Hmm, thinking about the stats, as
Mon, Sep 14, 2020 at 08:07:57AM CEST, moshe@xxxxxxxxxxxx wrote:
[..]
+static void mlx5_fw_reset_complete_reload(struct mlx5_core_dev *dev)Hmm, who originated the reset? Devlink_reload of the same devlink
+{
+ struct mlx5_fw_reset *fw_reset = dev->priv.fw_reset;
+
+ /* if this is the driver that initiated the fw reset, devlink completed the reload */
+ if (test_bit(MLX5_FW_RESET_FLAGS_PENDING_COMP, &fw_reset->reset_flags)) {
+ complete(&fw_reset->done);
+ } else {
+ mlx5_load_one(dev, false);
+ devlink_reload_implicit_actions_performed(priv_to_devlink(dev),
+ DEVLINK_RELOAD_ACTION_LIMIT_LEVEL_NONE,
+ BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) |
+ BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE));
instance?
Not the same devlink instance for sure. I defer it by the flag above
MLX5_FW_RESET_FLAG_PENDING_COMP. If the flag set, I set complete to the
reload_down() waiting for it.
devlink_reload_implicit_actions_performed() is called only in case
another instance does the reload, shouldn't it be a separate set of
stats? I think that the user would like to distinguish local and remote
reload, don't you think?
[..]