Re: [PATCH net-next RFC v4 10/15] net/mlx5: Add support for devlink reload action fw activate

From: Moshe Shemesh
Date: Tue Sep 15 2020 - 16:31:43 EST



On 9/15/2020 4:37 PM, Jiri Pirko wrote:
Tue, Sep 15, 2020 at 02:44:02PM CEST, moshe@xxxxxxxxxx wrote:
On 9/14/2020 4:54 PM, Jiri Pirko wrote:
Mon, Sep 14, 2020 at 08:07:57AM CEST, moshe@xxxxxxxxxxxx wrote:

[..]

+static void mlx5_fw_reset_complete_reload(struct mlx5_core_dev *dev)
+{
+ 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));
Hmm, who originated the reset? Devlink_reload of the same devlink
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.
Hmm, thinking about the stats, as
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?


Possible, it will double the counters, but it will give more info.

So actually, if devlink_reload is not supported by driver, I should hold and show only the remote stats or all stats always ?

How such remote counter should look like ? something like remote_fw_activate  while the local is just fw_activate ?


[..]