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.