On 9/8/20 4:54 PM, Jakub Kicinski wrote:
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.
Sure, but until that gets worked out, this should suffice.
+ } 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.
Yep, missed it. I'll follow up.
sln