|
@@ -427,10 +427,21 @@ int vmbus_post_msg(void *buffer, size_t buflen)
|
|
|
* insufficient resources. Retry the operation a couple of
|
|
|
* times before giving up.
|
|
|
*/
|
|
|
- while (retries < 3) {
|
|
|
- ret = hv_post_message(conn_id, 1, buffer, buflen);
|
|
|
- if (ret != HV_STATUS_INSUFFICIENT_BUFFERS)
|
|
|
+ while (retries < 10) {
|
|
|
+ ret = hv_post_message(conn_id, 1, buffer, buflen);
|
|
|
+
|
|
|
+ switch (ret) {
|
|
|
+ case HV_STATUS_INSUFFICIENT_BUFFERS:
|
|
|
+ ret = -ENOMEM;
|
|
|
+ case -ENOMEM:
|
|
|
+ break;
|
|
|
+ case HV_STATUS_SUCCESS:
|
|
|
return ret;
|
|
|
+ default:
|
|
|
+ pr_err("hv_post_msg() failed; error code:%d\n", ret);
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
retries++;
|
|
|
msleep(100);
|
|
|
}
|