hv: vmbus_post_msg: retry the hypercall on some transient errors
[deliverable/linux.git] / drivers / hv / connection.c
index c4acd1ce7c0c21852a61f37605804b7a74276407..af2388fdc6b9238802396ac4cac1204c219ee707 100644 (file)
@@ -440,9 +440,16 @@ int vmbus_post_msg(void *buffer, size_t buflen)
                ret = hv_post_message(conn_id, 1, buffer, buflen);
 
                switch (ret) {
+               case HV_STATUS_INVALID_CONNECTION_ID:
+                       /*
+                        * We could get this if we send messages too
+                        * frequently.
+                        */
+                       ret = -EAGAIN;
+                       break;
+               case HV_STATUS_INSUFFICIENT_MEMORY:
                case HV_STATUS_INSUFFICIENT_BUFFERS:
                        ret = -ENOMEM;
-               case -ENOMEM:
                        break;
                case HV_STATUS_SUCCESS:
                        return ret;
@@ -452,7 +459,7 @@ int vmbus_post_msg(void *buffer, size_t buflen)
                }
 
                retries++;
-               msleep(100);
+               msleep(1000);
        }
        return ret;
 }
This page took 0.026402 seconds and 5 git commands to generate.