From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id D611CA034F;
	Mon, 22 Mar 2021 08:23:33 +0100 (CET)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id CD778140DA1;
	Mon, 22 Mar 2021 08:23:26 +0100 (CET)
Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com
 [209.85.216.45])
 by mails.dpdk.org (Postfix) with ESMTP id CBC97140DA0
 for <dev@dpdk.org>; Mon, 22 Mar 2021 08:23:25 +0100 (CET)
Received: by mail-pj1-f45.google.com with SMTP id
 mz6-20020a17090b3786b02900c16cb41d63so8039464pjb.2
 for <dev@dpdk.org>; Mon, 22 Mar 2021 00:23:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google;
 h=from:to:cc:subject:date:message-id:in-reply-to:references
 :mime-version:content-transfer-encoding;
 bh=SkFPsAgotYzEeGCUVRmoqTdsEVni7ZMV5UoFO2bNFK8=;
 b=D7WcgpEDgvumYQJcTsBWhYIhWvkIrCnqbIQNXhUDNybPc9HxE1MBx4zADDdE9relJx
 mug0Rnt2XShBxRdYUcZWDNkAhrQkeOq+LksvbZDtrpZZINgXLDOT8p8rfFlk6grEmAGB
 HXwF3UcAHIeh5KLrfYVhw5T8tppMkXijiGC3I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references:mime-version:content-transfer-encoding;
 bh=SkFPsAgotYzEeGCUVRmoqTdsEVni7ZMV5UoFO2bNFK8=;
 b=ZtjHwZJt2cCkWVSi/qsh+II285vLItHdxL5zWDYo4cMJsdgnZUjWy6RtRcDesNH8FJ
 nFT/7Ex9v0yl9Twkw/1mR+C2bK/4a1KHeSCPvgFqtVLBQaKF8iuSRQSNi9MS01j2/nBm
 plXt+QT82mLmwsCUVRTXYctN7z3c6In9dqmhP6Lb+OO4x1SItRFjv3dWzH5AFDsxhBTD
 r/NOVbczFSBL824a/RvfK08IQOsAefXUxFyMSZOBVYiWtEHZbwGHx1/weNRTPLwLAz6t
 C2LQzCm8BKcYW6cwHdRspAit5cALN6TNDuiPsDPxnJdAxzTer5ZUpvBzjwXFozp3jKr5
 CE9w==
X-Gm-Message-State: AOAM53136vBu4cZTrmRxlIWooKzcIVslZUglU/DhFRUS+gNWPzq5k0u0
 5GruQcsdSMUgfNKVbqiRrqZUIYNptX0xbw==
X-Google-Smtp-Source: ABdhPJxN6z/vS+8RMLk3TdQxmbqEz29rX/ny9aBSpp60LUyNwF7t9LQYE2wcltl5lnPylZPGarpeLw==
X-Received: by 2002:a17:90b:310b:: with SMTP id
 gc11mr11913017pjb.186.1616397804731; 
 Mon, 22 Mar 2021 00:23:24 -0700 (PDT)
Received: from keiichiw1.tok.corp.google.com
 ([2401:fa00:8f:203:7479:43fd:8d9e:ce49])
 by smtp.gmail.com with ESMTPSA id r1sm12567376pjo.26.2021.03.22.00.23.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Mar 2021 00:23:24 -0700 (PDT)
From: Keiichi Watanabe <keiichiw@chromium.org>
To: dev@dpdk.org
Cc: dgreid@chromium.org, chirantan@chromium.org,
 Keiichi Watanabe <keiichiw@chromium.org>,
 Maxime Coquelin <maxime.coquelin@redhat.com>,
 Chenbo Xia <chenbo.xia@intel.com>
Date: Mon, 22 Mar 2021 16:22:57 +0900
Message-Id: <20210322072257.2017227-3-keiichiw@chromium.org>
X-Mailer: git-send-email 2.31.0.rc2.261.g7f71774620-goog
In-Reply-To: <20210322072257.2017227-1-keiichiw@chromium.org>
References: <20210322072257.2017227-1-keiichiw@chromium.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH v2 2/2] examples/vhost_blk: Check protocol
 features before getting inflight info
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

Avoid calling rte_vhost_get_vhost_ring_inflight() and
rte_vhost_get_vring_base_from_inflight() when
VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD is not set.

Signed-off-by: Keiichi Watanabe <keiichiw@chromium.org>
---
 examples/vhost_blk/vhost_blk.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/examples/vhost_blk/vhost_blk.c b/examples/vhost_blk/vhost_blk.c
index bb293d492..dd05881b4 100644
--- a/examples/vhost_blk/vhost_blk.c
+++ b/examples/vhost_blk/vhost_blk.c
@@ -603,10 +603,10 @@ new_device(int vid)
 	struct vhost_blk_ctrlr *ctrlr;
 	struct vhost_blk_queue *vq;
 	char path[PATH_MAX];
-	uint64_t features;
+	uint64_t features, protocol_features;
 	pthread_t tid;
 	int i, ret;
-	bool packed_ring;
+	bool packed_ring, inflight_shmfd;
 
 	ret = rte_vhost_get_ifname(vid, path, PATH_MAX);
 	if (ret) {
@@ -631,6 +631,16 @@ new_device(int vid)
 	}
 	packed_ring = !!(features & (1ULL << VIRTIO_F_RING_PACKED));
 
+	ret = rte_vhost_get_negotiated_protocol_features(
+		vid, &protocol_features);
+	if (ret) {
+		fprintf(stderr,
+			"Failed to get the negotiated protocol features\n");
+		return -1;
+	}
+	inflight_shmfd = !!(features &
+			    (1ULL << VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD));
+
 	/* Disable Notifications and init last idx */
 	for (i = 0; i < NUM_OF_BLK_QUEUES; i++) {
 		vq = &ctrlr->queues[i];
@@ -641,10 +651,13 @@ new_device(int vid)
 		assert(rte_vhost_get_vring_base(ctrlr->vid, i,
 					       &vq->last_avail_idx,
 					       &vq->last_used_idx) == 0);
-		assert(rte_vhost_get_vhost_ring_inflight(ctrlr->vid, i,
-						&vq->inflight_ring) == 0);
 
-		if (packed_ring) {
+		if (inflight_shmfd)
+			assert(rte_vhost_get_vhost_ring_inflight(
+				       ctrlr->vid, i,
+				       &vq->inflight_ring) == 0);
+
+		if (packed_ring && inflight_shmfd) {
 			/* for the reconnection */
 			assert(rte_vhost_get_vring_base_from_inflight(
 				ctrlr->vid, i,
-- 
2.31.0.rc2.261.g7f71774620-goog