From patchwork Mon Jan 22 16:00:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 125446 Delivered-To: patch@linaro.org Received: by 10.46.66.141 with SMTP id h13csp1234213ljf; Mon, 22 Jan 2018 08:08:13 -0800 (PST) X-Google-Smtp-Source: AH8x225YxelzOOfo9TFPUX/4iS2y7z/APBIEBT7C9szDfoRQxCERjF4Sj+SHbfrBAT2RwdJDiCJP X-Received: by 10.55.164.145 with SMTP id n139mr10843769qke.49.1516637292808; Mon, 22 Jan 2018 08:08:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516637292; cv=none; d=google.com; s=arc-20160816; b=SeP8UuBgaqUmLLRKOjjcEKSjrb98n3Kbz+tKYzlx6obUvN1/ks6SOa4cKfLsykpPyB WGlVlNkfDaGY4UBJ9FKlmWSFoUMBGnwMWYdLPQeA6XbQ/pn8egtf9bC/s4h2UAC5Vn6Q 5AqTUUlREioFLvR7j4Sh9GU2DHdBgf6LnDwxyePFp4ES9ZVtQXjQI9tf5GSMYl7nkva7 0MeYyGKoiy9OnsPHzfWdeNZKbkqcdNw4P3X0gT92US+xljlDKonKk3OgYx8zg1G4HBJW SYlHz3iu3KjzrXJfLOeziN28n6Nyw/0ntaZ7ecjMCpQaX4VXbUBEC7zzfGoCg+vplRxi XbRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:github-pr-num :references:in-reply-to:message-id:date:to:from:delivered-to :arc-authentication-results; bh=zIPjT1xQDQB/c/7qb7dTFULMd4vgq59xLNzj8WDlqg4=; b=wed2yxO+0AppaHFtpkaQcEJZCpLn97G1riNBxzw66wYKJMkfMP26BbSnOPg3Q9Fy34 cw1bJX7grLk3I7w69sopb7T7uXSQYIv3VWDGWwRks+XsHmmivqmlgXLbQDCEj28tM3Dk m84YPqXt+VZQhBpht2vwWNQojkEJWF85aWfEIurdFyWem9AVyqcYruvauGlWTue4e6LP oORooywC1fLHVGRmHDPDBYaFXR8Tc71xDyT3wzcKDFwskcUhQzhLumYDJRnIg+iH5GBH oR0qsNaZwM5xo/Dgq/N21ZhpstRWU/ZJPUw039Sc4V99phidKq55RBPtyht71z1N3ZJv HAlQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Return-Path: Received: from lists.linaro.org (ec2-54-197-127-237.compute-1.amazonaws.com. [54.197.127.237]) by mx.google.com with ESMTP id x3si1280785qtf.197.2018.01.22.08.08.12; Mon, 22 Jan 2018 08:08:12 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) client-ip=54.197.127.237; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.197.127.237 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=yandex.ru Received: by lists.linaro.org (Postfix, from userid 109) id 7D073617FD; Mon, 22 Jan 2018 16:08:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2 autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 8C366617CF; Mon, 22 Jan 2018 16:02:56 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 9B7416171E; Mon, 22 Jan 2018 16:02:42 +0000 (UTC) Received: from forward101o.mail.yandex.net (forward101o.mail.yandex.net [37.140.190.181]) by lists.linaro.org (Postfix) with ESMTPS id E5AAB6171E for ; Mon, 22 Jan 2018 16:00:33 +0000 (UTC) Received: from mxback5o.mail.yandex.net (mxback5o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1f]) by forward101o.mail.yandex.net (Yandex) with ESMTP id 99EF513426FE for ; Mon, 22 Jan 2018 19:00:31 +0300 (MSK) Received: from smtp1j.mail.yandex.net (smtp1j.mail.yandex.net [2a02:6b8:0:801::ab]) by mxback5o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id O6jkTa9DL8-0VICFNV2; Mon, 22 Jan 2018 19:00:31 +0300 Received: by smtp1j.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id O0cKlvvIDP-0Uoauk4Z; Mon, 22 Jan 2018 19:00:30 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client certificate not present) From: Github ODP bot To: lng-odp@lists.linaro.org Date: Mon, 22 Jan 2018 19:00:28 +0300 Message-Id: <1516636829-25161-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516636829-25161-1-git-send-email-odpbot@yandex.ru> References: <1516636829-25161-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 410 Subject: [lng-odp] [PATCH API-NEXT v3 2/3] linux-generic: pktio: drop support for indefinite waits in recv_tmo X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" From: Bill Fischofer Drop support for the deprecated ODP_PKTIN_WAIT option on odp_pktin_recv_tmo() and odp_pktin_recv_mq_tmo() Signed-off-by: Bill Fischofer --- /** Email created from pull request 410 (Bill-Fischofer-Linaro:pktio-dropwait) ** https://github.com/Linaro/odp/pull/410 ** Patch: https://github.com/Linaro/odp/pull/410.patch ** Base sha: 5fba303faf04d29b616f687ce1f721400b2c6f9c ** Merge commit sha: d3ec5308bd5a6917dc91dee1860dab99bd6e9b15 **/ include/odp/api/abi-default/packet_io.h | 1 - platform/linux-generic/odp_packet_io.c | 65 +++++++++++++---------------- platform/linux-generic/pktio/pktio_common.c | 3 +- platform/linux-generic/pktio/socket.c | 6 +-- platform/linux-generic/pktio/socket_mmap.c | 6 +-- 5 files changed, 34 insertions(+), 47 deletions(-) diff --git a/include/odp/api/abi-default/packet_io.h b/include/odp/api/abi-default/packet_io.h index 4795f8fc3..7cd3edd75 100644 --- a/include/odp/api/abi-default/packet_io.h +++ b/include/odp/api/abi-default/packet_io.h @@ -46,7 +46,6 @@ typedef struct odp_pktout_queue_t { #define ODP_PKTIO_MACADDR_MAXSIZE 16 #define ODP_PKTIN_NO_WAIT 0 -#define ODP_PKTIN_WAIT UINT64_MAX /** * @} diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 095f6be12..a06fa67b4 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -1699,33 +1699,28 @@ int odp_pktin_recv_tmo(odp_pktin_queue_t queue, odp_packet_t packets[], int num, while (1) { ret = entry->s.ops->recv(entry, queue.index, packets, num); - if (ret != 0) + if (ret != 0 || wait == 0) return ret; - if (wait == 0) - return 0; + /* Avoid unnecessary system calls. Record the start time + * only when needed and after the first call to recv. */ + if (odp_unlikely(!started)) { + odp_time_t t; - if (wait != ODP_PKTIN_WAIT) { - /* Avoid unnecessary system calls. Record the start time - * only when needed and after the first call to recv. */ - if (odp_unlikely(!started)) { - odp_time_t t; - - t = odp_time_local_from_ns(wait * 1000); - started = 1; - t1 = odp_time_sum(odp_time_local(), t); - } + t = odp_time_local_from_ns(wait * 1000); + started = 1; + t1 = odp_time_sum(odp_time_local(), t); + } - /* Check every SLEEP_CHECK rounds if total wait time - * has been exceeded. */ - if ((++sleep_round & (SLEEP_CHECK - 1)) == 0) { - t2 = odp_time_local(); + /* Check every SLEEP_CHECK rounds if total wait time + * has been exceeded. */ + if ((++sleep_round & (SLEEP_CHECK - 1)) == 0) { + t2 = odp_time_local(); - if (odp_time_cmp(t2, t1) > 0) - return 0; - } - wait = wait > SLEEP_USEC ? wait - SLEEP_USEC : 0; + if (odp_time_cmp(t2, t1) > 0) + return 0; } + wait = wait > SLEEP_USEC ? wait - SLEEP_USEC : 0; nanosleep(&ts, NULL); } @@ -1779,25 +1774,23 @@ int odp_pktin_recv_mq_tmo(const odp_pktin_queue_t queues[], unsigned num_q, if (wait == 0) return 0; - if (wait != ODP_PKTIN_WAIT) { - if (odp_unlikely(!started)) { - odp_time_t t; + if (odp_unlikely(!started)) { + odp_time_t t; - t = odp_time_local_from_ns(wait * 1000); - started = 1; - t1 = odp_time_sum(odp_time_local(), t); - } + t = odp_time_local_from_ns(wait * 1000); + started = 1; + t1 = odp_time_sum(odp_time_local(), t); + } - /* Check every SLEEP_CHECK rounds if total wait time - * has been exceeded. */ - if ((++sleep_round & (SLEEP_CHECK - 1)) == 0) { - t2 = odp_time_local(); + /* Check every SLEEP_CHECK rounds if total wait time + * has been exceeded. */ + if ((++sleep_round & (SLEEP_CHECK - 1)) == 0) { + t2 = odp_time_local(); - if (odp_time_cmp(t2, t1) > 0) - return 0; - } - wait = wait > SLEEP_USEC ? wait - SLEEP_USEC : 0; + if (odp_time_cmp(t2, t1) > 0) + return 0; } + wait = wait > SLEEP_USEC ? wait - SLEEP_USEC : 0; nanosleep(&ts, NULL); } diff --git a/platform/linux-generic/pktio/pktio_common.c b/platform/linux-generic/pktio/pktio_common.c index f6fb4a73d..c7a1c3ab9 100644 --- a/platform/linux-generic/pktio/pktio_common.c +++ b/platform/linux-generic/pktio/pktio_common.c @@ -107,8 +107,7 @@ static int sock_recv_mq_tmo_select(pktio_entry_t * const *entry, timeout.tv_sec = usecs / (1000 * 1000); timeout.tv_usec = usecs - timeout.tv_sec * (1000ULL * 1000ULL); - if (select(maxfd + 1, readfds, NULL, NULL, - usecs == ODP_PKTIN_WAIT ? NULL : &timeout) == 0) + if (select(maxfd + 1, readfds, NULL, NULL, &timeout) == 0) return 0; for (i = 0; i < num_q; i++) { diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c index 147a06900..c198336a0 100644 --- a/platform/linux-generic/pktio/socket.c +++ b/platform/linux-generic/pktio/socket.c @@ -721,8 +721,7 @@ static int sock_recv_tmo(pktio_entry_t *pktio_entry, int index, FD_ZERO(&readfds); maxfd = sock_fd_set(pktio_entry, index, &readfds); - if (select(maxfd + 1, &readfds, NULL, NULL, - usecs == ODP_PKTIN_WAIT ? NULL : &timeout) == 0) + if (select(maxfd + 1, &readfds, NULL, NULL, &timeout) == 0) return 0; return sock_mmsg_recv(pktio_entry, index, pkt_table, num); @@ -759,8 +758,7 @@ static int sock_recv_mq_tmo(pktio_entry_t *pktio_entry[], int index[], maxfd = maxfd2; } - if (select(maxfd + 1, &readfds, NULL, NULL, - usecs == ODP_PKTIN_WAIT ? NULL : &timeout) == 0) + if (select(maxfd + 1, &readfds, NULL, NULL, &timeout) == 0) return 0; for (i = 0; i < num_q; i++) { diff --git a/platform/linux-generic/pktio/socket_mmap.c b/platform/linux-generic/pktio/socket_mmap.c index 1bdb745a4..da83d8452 100644 --- a/platform/linux-generic/pktio/socket_mmap.c +++ b/platform/linux-generic/pktio/socket_mmap.c @@ -647,8 +647,7 @@ static int sock_mmap_recv_tmo(pktio_entry_t *pktio_entry, int index, FD_ZERO(&readfds); maxfd = sock_mmap_fd_set(pktio_entry, index, &readfds); - if (select(maxfd + 1, &readfds, NULL, NULL, - usecs == ODP_PKTIN_WAIT ? NULL : &timeout) == 0) + if (select(maxfd + 1, &readfds, NULL, NULL, &timeout) == 0) return 0; return sock_mmap_recv(pktio_entry, index, pkt_table, num); @@ -685,8 +684,7 @@ static int sock_mmap_recv_mq_tmo(pktio_entry_t *pktio_entry[], int index[], timeout.tv_sec = usecs / (1000 * 1000); timeout.tv_usec = usecs - timeout.tv_sec * (1000ULL * 1000ULL); - if (select(maxfd + 1, &readfds, NULL, NULL, - usecs == ODP_PKTIN_WAIT ? NULL : &timeout) == 0) + if (select(maxfd + 1, &readfds, NULL, NULL, &timeout) == 0) return 0; for (i = 0; i < num_q; i++) {