From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934849AbcA0Wuf (ORCPT ); Wed, 27 Jan 2016 17:50:35 -0500 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:59040 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933860AbcA0Wuc (ORCPT ); Wed, 27 Jan 2016 17:50:32 -0500 x-originating-ip: 72.167.245.219 From: "K. Y. Srinivasan" To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com Cc: Dexuan Cui , "K. Y. Srinivasan" Subject: [PATCH 07/13] Drivers: hv: vmbus: vmbus_sendpacket_ctl: hvsock: avoid unnecessary signaling Date: Wed, 27 Jan 2016 16:26:49 -0800 Message-Id: <1453940815-26096-7-git-send-email-kys@microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1453940815-26096-1-git-send-email-kys@microsoft.com> References: <1453940792-25878-1-git-send-email-kys@microsoft.com> <1453940815-26096-1-git-send-email-kys@microsoft.com> X-CMAE-Envelope: MS4wfAiF4ExqZEGHqmLZQEDdkEZzA+KBT+ouoIL8qTl1EC0lzGw9aMo8u0IGQlLughkDtS7jCz2inKJ4mcMZdC7DQRmZNSInOYY9NGggl3nsstnbubIdbMpW r+0YVQOyLRzjdyE/48PVVK3Sn2hMb5PB4290JhwDCLy7KfMD6q6BifC9gfoiZss0txBy06tCsSI0XeMHKMb8FHTbJPgSKWaHm//WkaDOnHdjXCKJykzHDzFL WlpYM+I9bUmAF0rr0nmMCtEb9QpdfTzKdN55b6d+gKutwDT0ujmw1SR3xSE+mGp/VQ+h2wtEZnuOOG6NVp9+xJaNCuSbbKZaRILQ5q58K4EsmUs+Ymn0QOJ/ R6ytJap1zCl6VeKZOrHzree3lIvZrh3bvUn3hI4g8KPloGz9l7MUWPISl1YPAQygHtC9Etasg7c5grTlFQTdBHasxWRvDA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dexuan Cui 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: Dexuan Cui Signed-off-by: K. Y. Srinivasan --- drivers/hv/channel.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c index 1161d68..3f04533 100644 --- a/drivers/hv/channel.c +++ b/drivers/hv/channel.c @@ -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; -- 1.7.4.1