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 166F2A04B1 for ; Fri, 28 Aug 2020 12:14:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0DC79A3; Fri, 28 Aug 2020 12:14:34 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by dpdk.org (Postfix) with ESMTP id E8F21A3 for ; Fri, 28 Aug 2020 12:14:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598609672; 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: in-reply-to:in-reply-to:references:references; bh=7OA46iX5piufS0BvfMK3wY+B10MbowZ/JaAWqIMFmfY=; b=M652AnICQhPV2WijZG4Xyd0x/gIHKboZQVdxERADRezzwLVI31sDoPzb376ai44AF6HIc+ B3gRJhE0ow/+Jm32tWeTVmbJm4Z6RlM8Xclz6N5CXV/mTfXVfRlNrB8vk7kx8Tayv8vT6x ds69kCnbfWp/ZRCJQFQpdNk5PwWltNg= 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-33-ymqZr_XRP3ucTZqhQw79QQ-1; Fri, 28 Aug 2020 06:14:29 -0400 X-MC-Unique: ymqZr_XRP3ucTZqhQw79QQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 88F13807339; Fri, 28 Aug 2020 10:14:28 +0000 (UTC) Received: from rh.redhat.com (unknown [10.33.36.20]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6C58119D7C; Fri, 28 Aug 2020 10:14:24 +0000 (UTC) From: Kevin Traynor To: Xiao Wang Cc: Adrian Moreno , Chenbo Xia , Maxime Coquelin , dpdk stable Date: Fri, 28 Aug 2020 11:12:59 +0100 Message-Id: <20200828101308.223767-33-ktraynor@redhat.com> In-Reply-To: <20200828101308.223767-1-ktraynor@redhat.com> References: <20200828101308.223767-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/virtio-user: fix status management' 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 09/02/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/c47cbdd54f381d1eede39fa29aa1adb695909dd2 Thanks. Kevin. --- >From c47cbdd54f381d1eede39fa29aa1adb695909dd2 Mon Sep 17 00:00:00 2001 From: Xiao Wang Date: Tue, 28 Jul 2020 14:52:12 +0800 Subject: [PATCH] net/virtio-user: fix status management [ upstream commit d0131e49c7fca45f4111eedab71f6dbd73bacd61 ] Apart from the virtio status, there should be also a network related status for link status management, current implementation mixes up these two statuses. One issue caused by this mixup is when virtio-user running in server mode and vhost as a client connects to it, a RARP packet will be generated by virtio-user due to VIRTIO_NET_S_ANNOUNCE bit is detected in the "status" in interrupt handler. VIRTIO_NET_S_LINK_UP and VIRTIO_NET_S_ANNOUNCE should be managed by a separated field. This patch adds a "net_status" field for this purpose. Fixes: e9efa4d93821 ("net/virtio-user: add new virtual PCI driver") Signed-off-by: Adrian Moreno Signed-off-by: Xiao Wang Reviewed-by: Chenbo Xia Reviewed-by: Maxime Coquelin --- drivers/net/virtio/virtio_user/virtio_user_dev.h | 1 + drivers/net/virtio/virtio_user_ethdev.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.h b/drivers/net/virtio/virtio_user/virtio_user_dev.h index d8a5070a28..098351d097 100644 --- a/drivers/net/virtio/virtio_user/virtio_user_dev.h +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.h @@ -37,4 +37,5 @@ struct virtio_user_dev { uint64_t unsupported_features; /* unsupported features mask */ uint8_t status; + uint16_t net_status; uint16_t port_id; uint8_t mac_addr[ETHER_ADDR_LEN]; diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c index 7c275c7397..5ac813e0d6 100644 --- a/drivers/net/virtio/virtio_user_ethdev.c +++ b/drivers/net/virtio/virtio_user_ethdev.c @@ -140,5 +140,5 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, r = recv(dev->vhostfd, buf, 128, MSG_PEEK); if (r == 0 || (r < 0 && errno != EAGAIN)) { - dev->status &= (~VIRTIO_NET_S_LINK_UP); + dev->net_status &= (~VIRTIO_NET_S_LINK_UP); PMD_DRV_LOG(ERR, "virtio-user port %u is down", hw->port_id); @@ -152,5 +152,5 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, (void *)hw); } else { - dev->status |= VIRTIO_NET_S_LINK_UP; + dev->net_status |= VIRTIO_NET_S_LINK_UP; } if (fcntl(dev->vhostfd, F_SETFL, @@ -160,10 +160,10 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, } } else if (dev->is_server) { - dev->status &= (~VIRTIO_NET_S_LINK_UP); + dev->net_status &= (~VIRTIO_NET_S_LINK_UP); if (virtio_user_server_reconnect(dev) >= 0) - dev->status |= VIRTIO_NET_S_LINK_UP; + dev->net_status |= VIRTIO_NET_S_LINK_UP; } - *(uint16_t *)dst = dev->status; + *(uint16_t *)dst = dev->net_status; } -- 2.26.2 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-08-28 11:03:26.719985549 +0100 +++ 0033-net-virtio-user-fix-status-management.patch 2020-08-28 11:03:25.985955928 +0100 @@ -1 +1 @@ -From d0131e49c7fca45f4111eedab71f6dbd73bacd61 Mon Sep 17 00:00:00 2001 +From c47cbdd54f381d1eede39fa29aa1adb695909dd2 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit d0131e49c7fca45f4111eedab71f6dbd73bacd61 ] + @@ -19 +20,0 @@ -Cc: stable@dpdk.org @@ -31 +32 @@ -index 56e638f8a6..554174e819 100644 +index d8a5070a28..098351d097 100644 @@ -34,2 +35,2 @@ -@@ -45,4 +45,5 @@ struct virtio_user_dev { - */ +@@ -37,4 +37,5 @@ struct virtio_user_dev { + uint64_t unsupported_features; /* unsupported features mask */ @@ -39 +40 @@ - uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; + uint8_t mac_addr[ETHER_ADDR_LEN]; @@ -41 +42 @@ -index e51425c4f8..6003f6d50f 100644 +index 7c275c7397..5ac813e0d6 100644 @@ -44 +45 @@ -@@ -206,5 +206,5 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, +@@ -140,5 +140,5 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, @@ -51 +52 @@ -@@ -218,5 +218,5 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, +@@ -152,5 +152,5 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, @@ -58 +59 @@ -@@ -226,10 +226,10 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset, +@@ -160,10 +160,10 @@ virtio_user_read_dev_config(struct virtio_hw *hw, size_t offset,