From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 80519431B8; Fri, 20 Oct 2023 09:41:56 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0BE5F402B8; Fri, 20 Oct 2023 09:41:56 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 16222402B7 for ; Fri, 20 Oct 2023 09:41:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697787714; 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:autocrypt:autocrypt; bh=JdW/ycTrTjRaGPE5O3U7QUWvQ/gg5N7zwnfnHhFIjRs=; b=ia9Ly6Aqod5FapXg50HrEHmpADRKs2mPNeTlHZ3aMDIxwjxii60Lku7owXqEhde0+C1Cgf UGL6eiCjtg7cYEgJz6C4mGtSx5/yB5mFrq5kO1p5AMf7QRHJu/6PR3U/A2eHsiDGDIqFoh sYLgGq3UULhaEDi/2NP6q9a7TfAFgk8= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-370-MuQSOaD7OyqWx6-1RAG5Rw-1; Fri, 20 Oct 2023 03:41:51 -0400 X-MC-Unique: MuQSOaD7OyqWx6-1RAG5Rw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9877188B778; Fri, 20 Oct 2023 07:41:50 +0000 (UTC) Received: from [10.39.208.31] (unknown [10.39.208.31]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AC77F40C6F7B; Fri, 20 Oct 2023 07:41:49 +0000 (UTC) Message-ID: Date: Fri, 20 Oct 2023 09:41:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 22/29] vhost: remove experimental from some API's To: Stephen Hemminger , dev@dpdk.org Cc: chenbo.xia@outlook.com References: <20230808173527.186042-1-stephen@networkplumber.org> <20231019165559.115742-1-stephen@networkplumber.org> <20231019165559.115742-23-stephen@networkplumber.org> From: Maxime Coquelin Autocrypt: addr=maxime.coquelin@redhat.com; keydata= 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 Mwqu3GQ= In-Reply-To: <20231019165559.115742-23-stephen@networkplumber.org> X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.2 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 10/19/23 18:55, Stephen Hemminger wrote: > All API's that before 22.11 release should have experimental > tag removed. > > Signed-off-by: Stephen Hemminger > --- > lib/vhost/rte_vhost.h | 5 ---- > lib/vhost/rte_vhost_async.h | 19 -------------- > lib/vhost/rte_vhost_crypto.h | 1 - > lib/vhost/version.map | 51 ++++++++++++++---------------------- > 4 files changed, 19 insertions(+), 57 deletions(-) > > diff --git a/lib/vhost/rte_vhost.h b/lib/vhost/rte_vhost.h > index fec650b1dbba..db92f0534431 100644 > --- a/lib/vhost/rte_vhost.h > +++ b/lib/vhost/rte_vhost.h > @@ -509,7 +509,6 @@ rte_vhost_driver_get_vdpa_device(const char *path); > * @return > * 0 on success, -1 on failure > */ > -__rte_experimental > int > rte_vhost_driver_get_vdpa_dev_type(const char *path, uint32_t *type); > > @@ -648,7 +647,6 @@ int rte_vhost_get_negotiated_features(int vid, uint64_t *features); > * @return > * 0 on success, -1 on failure > */ > -__rte_experimental > int > rte_vhost_get_negotiated_protocol_features(int vid, > uint64_t *protocol_features); > @@ -960,7 +958,6 @@ int rte_vhost_vring_call(int vid, uint16_t vring_idx); > * @return > * 0 on success, -1 on failure, -EAGAIN for another retry > */ > -__rte_experimental > int rte_vhost_vring_call_nonblock(int vid, uint16_t vring_idx); > > /** > @@ -987,7 +984,6 @@ uint32_t rte_vhost_rx_queue_count(int vid, uint16_t qid); > * @return > * 0 on success, -1 on failure > */ > -__rte_experimental > int > rte_vhost_get_monitor_addr(int vid, uint16_t queue_id, > struct rte_vhost_power_monitor_cond *pmc); > @@ -1102,7 +1098,6 @@ rte_vhost_get_vdpa_device(int vid); > * @return > * 0 on success, < 0 on failure > */ > -__rte_experimental > int > rte_vhost_backend_config_change(int vid, bool need_reply); > > diff --git a/lib/vhost/rte_vhost_async.h b/lib/vhost/rte_vhost_async.h > index 8f190dd44b1b..3370026415fb 100644 > --- a/lib/vhost/rte_vhost_async.h > +++ b/lib/vhost/rte_vhost_async.h > @@ -24,7 +24,6 @@ extern "C" { > * @return > * 0 on success, -1 on failures > */ > -__rte_experimental > int rte_vhost_async_channel_register(int vid, uint16_t queue_id); > > /** > @@ -37,7 +36,6 @@ int rte_vhost_async_channel_register(int vid, uint16_t queue_id); > * @return > * 0 on success, -1 on failures > */ > -__rte_experimental > int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id); > > /** > @@ -54,7 +52,6 @@ int rte_vhost_async_channel_unregister(int vid, uint16_t queue_id); > * @return > * 0 on success, -1 on failures > */ > -__rte_experimental > int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id); > > /** > @@ -71,7 +68,6 @@ int rte_vhost_async_channel_register_thread_unsafe(int vid, uint16_t queue_id); > * @return > * 0 on success, -1 on failures > */ > -__rte_experimental > int rte_vhost_async_channel_unregister_thread_unsafe(int vid, > uint16_t queue_id); > > @@ -95,7 +91,6 @@ int rte_vhost_async_channel_unregister_thread_unsafe(int vid, > * @return > * num of packets enqueued > */ > -__rte_experimental > uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id, > struct rte_mbuf **pkts, uint16_t count, int16_t dma_id, > uint16_t vchan_id); > @@ -120,7 +115,6 @@ uint16_t rte_vhost_submit_enqueue_burst(int vid, uint16_t queue_id, > * @return > * num of packets returned > */ > -__rte_experimental > uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id, > struct rte_mbuf **pkts, uint16_t count, int16_t dma_id, > uint16_t vchan_id); > @@ -136,7 +130,6 @@ uint16_t rte_vhost_poll_enqueue_completed(int vid, uint16_t queue_id, > * @return > * the amount of in-flight packets on success; -1 on failure > */ > -__rte_experimental > int rte_vhost_async_get_inflight(int vid, uint16_t queue_id); > > /** > @@ -153,7 +146,6 @@ int rte_vhost_async_get_inflight(int vid, uint16_t queue_id); > * @return > * the amount of in-flight packets on success; -1 on failure > */ > -__rte_experimental > int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id); > > /** > @@ -178,7 +170,6 @@ int rte_vhost_async_get_inflight_thread_unsafe(int vid, uint16_t queue_id); > * @return > * Number of packets returned > */ > -__rte_experimental > uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id, > struct rte_mbuf **pkts, uint16_t count, int16_t dma_id, > uint16_t vchan_id); > @@ -203,7 +194,6 @@ uint16_t rte_vhost_clear_queue_thread_unsafe(int vid, uint16_t queue_id, > * @return > * Number of packets returned > */ > -__rte_experimental > uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id, > struct rte_mbuf **pkts, uint16_t count, int16_t dma_id, > uint16_t vchan_id); > @@ -226,13 +216,9 @@ uint16_t rte_vhost_clear_queue(int vid, uint16_t queue_id, > * @return > * 0 on success, and -1 on failure > */ > -__rte_experimental > int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id); > > /** > - * @warning > - * @b EXPERIMENTAL: this API may change, or be removed, without prior notice > - * > * This function tries to receive packets from the guest with offloading > * copies to the DMA vChannels. Successfully dequeued packets are returned > * in "pkts". The other packets that their copies are submitted to > @@ -260,16 +246,12 @@ int rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id); > * @return > * Number of successfully dequeued packets > */ > -__rte_experimental > uint16_t > rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id, > struct rte_mempool *mbuf_pool, struct rte_mbuf **pkts, uint16_t count, > int *nr_inflight, int16_t dma_id, uint16_t vchan_id); > > /** > - * @warning > - * @b EXPERIMENTAL: this API may change, or be removed, without prior notice. > - * > * Unconfigure DMA vChannel in Vhost asynchronous data path. > * This function should be called when the specified DMA vChannel is no longer > * used by the Vhost library. Before this function is called, make sure there > @@ -282,7 +264,6 @@ rte_vhost_async_try_dequeue_burst(int vid, uint16_t queue_id, > * @return > * 0 on success, and -1 on failure > */ > -__rte_experimental > int > rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id); > I think we should wait before remove experimental tag on all the Vhost async APIs. Indeed, it was intended to be used by OVS, but the proposed architecture was nacked by the OVS maintainers. I'm not aware of any other user of these APIs. So we are not sure the proposed API is a good fit. Furthermore, it is not clear the team who implemented Vhost Async are still going to maintain it. Chenbo, what do you think? Thanks, Maxime > diff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h > index 2b01ecda0880..71a30ba202be 100644 > --- a/lib/vhost/rte_vhost_crypto.h > +++ b/lib/vhost/rte_vhost_crypto.h > @@ -40,7 +40,6 @@ enum rte_vhost_crypto_zero_copy { > * @return > * 0 on success, -1 on failure > */ > -__rte_experimental > int > rte_vhost_crypto_driver_start(const char *path); > > diff --git a/lib/vhost/version.map b/lib/vhost/version.map > index 5bc133dafda2..9696c4d91fe8 100644 > --- a/lib/vhost/version.map > +++ b/lib/vhost/version.map > @@ -9,10 +9,23 @@ DPDK_24 { > rte_vdpa_get_stats; > rte_vdpa_get_stats_names; > rte_vdpa_reset_stats; > + rte_vhost_async_channel_register; > + rte_vhost_async_channel_register_thread_unsafe; > + rte_vhost_async_channel_unregister; > + rte_vhost_async_channel_unregister_thread_unsafe; > + rte_vhost_async_dma_configure; > + rte_vhost_async_dma_unconfigure; > + rte_vhost_async_get_inflight; > + rte_vhost_async_get_inflight_thread_unsafe; > + rte_vhost_async_try_dequeue_burst; > rte_vhost_avail_entries; > + rte_vhost_backend_config_change; > + rte_vhost_clear_queue; > + rte_vhost_clear_queue_thread_unsafe; > rte_vhost_clr_inflight_desc_packed; > rte_vhost_clr_inflight_desc_split; > rte_vhost_crypto_create; > + rte_vhost_crypto_driver_start; > rte_vhost_crypto_fetch_requests; > rte_vhost_crypto_finalize_requests; > rte_vhost_crypto_free; > @@ -26,6 +39,7 @@ DPDK_24 { > rte_vhost_driver_get_features; > rte_vhost_driver_get_protocol_features; > rte_vhost_driver_get_queue_num; > + rte_vhost_driver_get_vdpa_dev_type; > rte_vhost_driver_get_vdpa_device; > rte_vhost_driver_register; > rte_vhost_driver_set_features; > @@ -38,8 +52,10 @@ DPDK_24 { > rte_vhost_get_ifname; > rte_vhost_get_log_base; > rte_vhost_get_mem_table; > + rte_vhost_get_monitor_addr; > rte_vhost_get_mtu; > rte_vhost_get_negotiated_features; > + rte_vhost_get_negotiated_protocol_features; > rte_vhost_get_numa_node; > rte_vhost_get_vdpa_device; > rte_vhost_get_vhost_ring_inflight; > @@ -49,14 +65,17 @@ DPDK_24 { > rte_vhost_get_vring_num; > rte_vhost_log_used_vring; > rte_vhost_log_write; > + rte_vhost_poll_enqueue_completed; > rte_vhost_rx_queue_count; > rte_vhost_set_inflight_desc_packed; > rte_vhost_set_inflight_desc_split; > rte_vhost_set_last_inflight_io_packed; > rte_vhost_set_last_inflight_io_split; > rte_vhost_set_vring_base; > + rte_vhost_submit_enqueue_burst; > rte_vhost_va_from_guest_pa; > rte_vhost_vring_call; > + rte_vhost_vring_call_nonblock; > rte_vhost_vring_stats_get; > rte_vhost_vring_stats_get_names; > rte_vhost_vring_stats_reset; > @@ -67,38 +86,6 @@ DPDK_24 { > EXPERIMENTAL { > global: > > - rte_vhost_crypto_driver_start; > - rte_vhost_backend_config_change; > - rte_vhost_async_channel_register; > - rte_vhost_async_channel_unregister; > - rte_vhost_submit_enqueue_burst; > - rte_vhost_poll_enqueue_completed; > - > - # added in 21.05 > - rte_vhost_get_negotiated_protocol_features; > - > - # added in 21.08 > - rte_vhost_async_get_inflight; > - rte_vhost_async_channel_register_thread_unsafe; > - rte_vhost_async_channel_unregister_thread_unsafe; > - rte_vhost_clear_queue_thread_unsafe; > - > - # added in 21.11 > - rte_vhost_get_monitor_addr; > - > - # added in 22.03 > - rte_vhost_async_dma_configure; > - > - # added in 22.07 > - rte_vhost_async_get_inflight_thread_unsafe; > - rte_vhost_async_try_dequeue_burst; > - rte_vhost_driver_get_vdpa_dev_type; > - rte_vhost_clear_queue; > - > - # added in 22.11 > - rte_vhost_async_dma_unconfigure; > - rte_vhost_vring_call_nonblock; > - > # added in 23.07 > rte_vhost_driver_set_max_queue_num; > rte_vhost_notify_guest;