On Tue,  8 Sep 2020 15:48:12 -0700 Shannon Nelson wrote:
> +     dl = priv_to_devlink(ionic);
> +     devlink_flash_update_status_notify(dl, label, NULL, 1, timeout);
> +     start_time = jiffies;
> +     end_time = start_time + (timeout * HZ);
> +     do {
> +             mutex_lock(&ionic->dev_cmd_lock);
> +             ionic_dev_cmd_go(&ionic->idev, &cmd);
> +             err = ionic_dev_cmd_wait(ionic, DEVCMD_TIMEOUT);
> +             mutex_unlock(&ionic->dev_cmd_lock);
> +
> +             devlink_flash_update_status_notify(dl, label, NULL,
> +                                                (jiffies - start_time) / HZ,
> +                                                timeout);

That's not what I meant. I think we can plumb proper timeout parameter
through devlink all the way to user space.

> +     } while (time_before(jiffies, end_time) && (err == -EAGAIN || err == 
> -ETIMEDOUT));
> +
> +     if (err == -EAGAIN || err == -ETIMEDOUT) {
> +             NL_SET_ERR_MSG_MOD(extack, "Firmware wait timed out");
> +             dev_err(ionic->dev, "DEV_CMD firmware wait %s timed out\n", 
> label);
> +     } else if (err) {
> +             NL_SET_ERR_MSG_MOD(extack, "Firmware wait failed");
> +     } else {
> +             devlink_flash_update_status_notify(dl, label, NULL, timeout, 
> timeout);
> +     }


> +             if (offset > next_interval) {
> +                     devlink_flash_update_status_notify(dl, "Downloading",
> +                                                        NULL, offset, 
> fw->size);
> +                     next_interval = offset + (fw->size / 
> IONIC_FW_INTERVAL_FRACTION);
> +             }
> +     }
> +     devlink_flash_update_status_notify(dl, "Downloading", NULL, 1, 1);

This one wasn't updated.

Reply via email to