From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id EE0D8A053D for ; Fri, 17 Jul 2020 18:32:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 881731BEBC; Fri, 17 Jul 2020 18:32:38 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [207.211.31.81]) by dpdk.org (Postfix) with ESMTP id E4D261BEB4 for ; Fri, 17 Jul 2020 18:32:36 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1595003556; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c5bDyK8l6qUFTHWV+DSuSiWekLAtatYgFQ69AoZtiTc=; b=SMw4Zu9ScVTxGIo1obmgN/+SspxUPkh5DxruS+6ZDVSR73IKEpizGTVM/Iz9OFiZl/ORLl alTkhhK/i0LRtXqCBZpnAADJo8J0AHla/tyFsVxkZjhYnPILo5woh/FWV3MIwj7gDXn8ji uiIGddGqe51w5P1TMsqxrJ62MujGIV4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-455-nsJDKPWGPIOy9_0gRnk54g-1; Fri, 17 Jul 2020 12:32:24 -0400 X-MC-Unique: nsJDKPWGPIOy9_0gRnk54g-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DFADD1800D42; Fri, 17 Jul 2020 16:32:23 +0000 (UTC) Received: from rh.redhat.com (unknown [10.33.36.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2EBFF75556; Fri, 17 Jul 2020 16:32:22 +0000 (UTC) From: Kevin Traynor To: Stephen Hemminger Cc: dpdk stable Date: Fri, 17 Jul 2020 17:31:49 +0100 Message-Id: <20200717163214.4839-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/netvsc: do not spin forever waiting for reply' has been queued to LTS release 18.11.10 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 18.11.10 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/23/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/59257aaaa12da7c8ec6419cf19ad72acd9dae907 Thanks. Kevin. --- >From 59257aaaa12da7c8ec6419cf19ad72acd9dae907 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 19 May 2020 09:52:30 -0700 Subject: [PATCH] net/netvsc: do not spin forever waiting for reply [ upstream commit 3c9be81be917e1659a3a9ab332c277280986ed03 ] Because of bugs in driver or host a reply to a request might never occur. Better to give an error than spin forever. Fixes: 4e9c73e96e83 ("net/netvsc: add Hyper-V network device") Signed-off-by: Stephen Hemminger --- drivers/net/netvsc/hn_rndis.c | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/drivers/net/netvsc/hn_rndis.c b/drivers/net/netvsc/hn_rndis.c index 0134ecb67e..cb85ffe40d 100644 --- a/drivers/net/netvsc/hn_rndis.c +++ b/drivers/net/netvsc/hn_rndis.c @@ -11,4 +11,5 @@ #include #include +#include #include @@ -34,4 +35,7 @@ #include "ndis.h" +#define RNDIS_TIMEOUT_SEC 5 +#define RNDIS_DELAY_MS 10 + #define HN_RNDIS_XFER_SIZE 0x4000 @@ -349,5 +353,5 @@ void hn_rndis_receive_response(struct hn_data *hv, if (rte_atomic32_cmpset(&hv->rndis_pending, hdr->rid, 0) == 0) { - PMD_DRV_LOG(ERR, + PMD_DRV_LOG(NOTICE, "received id %#x pending id %#x", hdr->rid, (uint32_t)hv->rndis_pending); @@ -372,4 +376,9 @@ static int hn_rndis_exec1(struct hn_data *hv, } + if (rid == 0) { + PMD_DRV_LOG(ERR, "Invalid request id"); + return -EINVAL; + } + if (comp != NULL && rte_atomic32_cmpset(&hv->rndis_pending, 0, rid) == 0) { @@ -386,7 +395,24 @@ static int hn_rndis_exec1(struct hn_data *hv, if (comp) { + time_t start = time(NULL); + /* Poll primary channel until response received */ - while (hv->rndis_pending == rid) + while (hv->rndis_pending == rid) { + if (hv->closed) + return -ENETDOWN; + + if (time(NULL) - start > RNDIS_TIMEOUT_SEC) { + PMD_DRV_LOG(ERR, + "RNDIS response timed out"); + + rte_atomic32_cmpset(&hv->rndis_pending, rid, 0); + return -ETIMEDOUT; + } + + if (rte_vmbus_chan_rx_empty(hv->primary->chan)) + rte_delay_ms(RNDIS_DELAY_MS); + hn_process_events(hv, 0, 1); + } memcpy(comp, hv->rndis_resp, comp_len); -- 2.21.3 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-07-17 17:17:00.054805173 +0100 +++ 0001-net-netvsc-do-not-spin-forever-waiting-for-reply.patch 2020-07-17 17:16:59.949772090 +0100 @@ -1 +1 @@ -From 3c9be81be917e1659a3a9ab332c277280986ed03 Mon Sep 17 00:00:00 2001 +From 59257aaaa12da7c8ec6419cf19ad72acd9dae907 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 3c9be81be917e1659a3a9ab332c277280986ed03 ] + @@ -10 +11,0 @@ -Cc: stable@dpdk.org @@ -18 +19 @@ -index 6a850ce5f2..d186ddeabd 100644 +index 0134ecb67e..cb85ffe40d 100644 @@ -27 +28 @@ -@@ -35,4 +36,7 @@ +@@ -34,4 +35,7 @@ @@ -35 +36 @@ -@@ -355,5 +359,5 @@ void hn_rndis_receive_response(struct hn_data *hv, +@@ -349,5 +353,5 @@ void hn_rndis_receive_response(struct hn_data *hv, @@ -42 +43 @@ -@@ -378,4 +382,9 @@ static int hn_rndis_exec1(struct hn_data *hv, +@@ -372,4 +376,9 @@ static int hn_rndis_exec1(struct hn_data *hv, @@ -52 +53 @@ -@@ -392,7 +401,24 @@ static int hn_rndis_exec1(struct hn_data *hv, +@@ -386,7 +395,24 @@ static int hn_rndis_exec1(struct hn_data *hv,