freebsd-dev/sys/dev/hyperv/vmbus
Sepherosa Ziehau 25a40f12b0 hyperv/vmbus: use a better retry method in hv_vmbus_post_message()
Most often, hv_vmbus_post_message() doesn't fail.  However, it fails
intermittently when GPADLs of large shared memory is to be established
with the host, e.g. on the hn(4) attach path: a GPADL of 15MB sendbuf
is created, for which lots of messages will be flooded to the host.
The host side tries to throttle the message rate by returning
HV_STATUS_INSUFFICIENT_BUFFERS.

Before this commit, we do several retries for failed messages, but the
delay between each retry is pretty/too low, which will cause sporadic
message posting failure.  We now use large delay (>=1ms) between each
retry to fix the message posting failure.

Submitted by:	Dexuan Cui <decui microsoft com>
Reviewed by:	sephe
MFC after:	1 week
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D5715
2016-03-24 00:40:41 +00:00
..
hv_channel_mgmt.c hyperv/hn: Add multiple channel support, a.k.a. vRSS 2016-03-04 06:52:11 +00:00
hv_channel.c hyperv/chan: Function renaming; no functional change 2016-03-02 01:33:30 +00:00
hv_connection.c hyperv/vmbus: use a better retry method in hv_vmbus_post_message() 2016-03-24 00:40:41 +00:00
hv_et.c hyperv/evttimer: Use an independent message slot so that it can work 2016-03-22 05:48:51 +00:00
hv_hv.c hyperv/evttimer: Use an independent message slot so that it can work 2016-03-22 05:48:51 +00:00
hv_ring_buffer.c hyperv/channel: Add debug sysctl nodes for channel indices 2016-02-29 05:24:29 +00:00
hv_vmbus_drv_freebsd.c hyperv/vmbus: Remove NULL check for taskqueue_create_fast(M_WAITOK) 2016-03-22 06:23:09 +00:00
hv_vmbus_priv.h hyperv/vmbus: use a better retry method in hv_vmbus_post_message() 2016-03-24 00:40:41 +00:00