Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f363bc3 authored by Dexuan Cui's avatar Dexuan Cui Committed by Greg Kroah-Hartman
Browse files

Drivers: hv: vmbus: vmbus_sendpacket_ctl: hvsock: avoid unnecessary signaling



When the hvsock channel's outbound ringbuffer is full (i.e.,
hv_ringbuffer_write() returns -EAGAIN), we should avoid the unnecessary
signaling the host.

Signed-off-by: default avatarDexuan Cui <decui@microsoft.com>
Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e8d6ca02
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -659,6 +659,9 @@ int vmbus_sendpacket_ctl(struct vmbus_channel *channel, void *buffer,
	 * If we cannot write to the ring-buffer; signal the host
	 * even if we may not have written anything. This is a rare
	 * enough condition that it should not matter.
	 * NOTE: in this case, the hvsock channel is an exception, because
	 * it looks the host side's hvsock implementation has a throttling
	 * mechanism which can hurt the performance otherwise.
	 */

	if (channel->signal_policy)
@@ -666,7 +669,8 @@ int vmbus_sendpacket_ctl(struct vmbus_channel *channel, void *buffer,
	else
		kick_q = true;

	if (((ret == 0) && kick_q && signal) || (ret))
	if (((ret == 0) && kick_q && signal) ||
	    (ret && !is_hvsock_channel(channel)))
		vmbus_setevent(channel);

	return ret;