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


Reply via email to