From patchwork Mon Mar 2 18:46:57 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ciprian Barbu X-Patchwork-Id: 45311 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-la0-f69.google.com (mail-la0-f69.google.com [209.85.215.69]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 3D13D214B5 for ; Mon, 2 Mar 2015 18:48:21 +0000 (UTC) Received: by labhs14 with SMTP id hs14sf10079295lab.0 for ; Mon, 02 Mar 2015 10:48:20 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:from:to:date:message-id:in-reply-to :references:subject:precedence:list-id:list-unsubscribe:list-archive :list-post:list-help:list-subscribe:mime-version:content-type :content-transfer-encoding:errors-to:sender:x-original-sender :x-original-authentication-results:mailing-list; bh=eugG+WUiH3p8JIn4yUbOkiQ6acPNDxOrq6eyuY0b+n0=; b=Xem7gqTh2Vyc6nd6MQGeTsqlQhXG20VTMwuS9qnAO9TBW3KXLXDaHuB9U3ycLc/qYH WRfb0Rvmaiw2gCGMjeg8tsoqdEmthws9vPdM8Wj9XLChzFaaeZXyElbHpB+kQn1/J97p 8Q8pZ3yakAgQRzKOZbaJd6XeZ755GDrDjwzN6s6q3QLclyssAT+qUh4cgcVeqQUEF/Fd aCjfkls8QzELSXCGCYM3KYkdSD+eQmQMpG9yilT82j4DmJVOHdQSrofy9QeZqgUdgLQN krusxkunOinowNfdDgT5BSo40yWJvC8L8UdGAdstSKSgrLEQz0ZxA+lEmeAL6lkbsCYA /FeA== X-Gm-Message-State: ALoCoQlgncAaNxKjGsgV9PufKGfuxDRkyCLGInBAUai296nFudcLtk5VF/Um48/rep5Qm5T/zIXZ X-Received: by 10.180.80.35 with SMTP id o3mr2477503wix.0.1425322100039; Mon, 02 Mar 2015 10:48:20 -0800 (PST) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.197.2 with SMTP id iq2ls473190lac.100.gmail; Mon, 02 Mar 2015 10:48:19 -0800 (PST) X-Received: by 10.112.201.69 with SMTP id jy5mr11296551lbc.78.1425322099841; Mon, 02 Mar 2015 10:48:19 -0800 (PST) Received: from mail-la0-f43.google.com (mail-la0-f43.google.com. [209.85.215.43]) by mx.google.com with ESMTPS id r11si9429802lal.129.2015.03.02.10.48.19 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 02 Mar 2015 10:48:19 -0800 (PST) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.43 as permitted sender) client-ip=209.85.215.43; Received: by labge10 with SMTP id ge10so32328026lab.12 for ; Mon, 02 Mar 2015 10:48:19 -0800 (PST) X-Received: by 10.112.118.211 with SMTP id ko19mr25795331lbb.19.1425322099750; Mon, 02 Mar 2015 10:48:19 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.35.133 with SMTP id h5csp90343lbj; Mon, 2 Mar 2015 10:48:19 -0800 (PST) X-Received: by 10.229.68.136 with SMTP id v8mr8426494qci.16.1425322098498; Mon, 02 Mar 2015 10:48:18 -0800 (PST) Received: from ip-10-35-177-41.ec2.internal (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTPS id k6si12431231qan.13.2015.03.02.10.48.17 (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 02 Mar 2015 10:48:18 -0800 (PST) Received-SPF: none (google.com: lng-odp-bounces@lists.linaro.org does not designate permitted sender hosts) client-ip=54.225.227.206; Received: from localhost ([127.0.0.1] helo=ip-10-35-177-41.ec2.internal) by ip-10-35-177-41.ec2.internal with esmtp (Exim 4.76) (envelope-from ) id 1YSVO2-0008M5-Pb; Mon, 02 Mar 2015 18:48:14 +0000 Received: from mail-la0-f41.google.com ([209.85.215.41]) by ip-10-35-177-41.ec2.internal with esmtp (Exim 4.76) (envelope-from ) id 1YSVNF-0008Ad-Ar for lng-odp@lists.linaro.org; Mon, 02 Mar 2015 18:47:25 +0000 Received: by lams18 with SMTP id s18so32353638lam.13 for ; Mon, 02 Mar 2015 10:47:19 -0800 (PST) X-Received: by 10.152.23.42 with SMTP id j10mr25314441laf.115.1425322039795; Mon, 02 Mar 2015 10:47:19 -0800 (PST) Received: from cipriantemp.enea.se (sestofw01.enea.se. [192.36.1.252]) by mx.google.com with ESMTPSA id i13sm2696725lab.38.2015.03.02.10.47.18 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 02 Mar 2015 10:47:19 -0800 (PST) From: Ciprian Barbu To: lng-odp@lists.linaro.org Date: Mon, 2 Mar 2015 20:46:57 +0200 Message-Id: <1425322017-14636-13-git-send-email-ciprian.barbu@linaro.org> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1425322017-14636-1-git-send-email-ciprian.barbu@linaro.org> References: <1425322017-14636-1-git-send-email-ciprian.barbu@linaro.org> X-Topics: patch Subject: [lng-odp] [PATCH NETMAP 12/12] linux-netmap: pktio: poll only when needed X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: , List-Help: , List-Subscribe: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: lng-odp-bounces@lists.linaro.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: ciprian.barbu@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.43 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 Calling poll each time in send and recv routines has its cost, calling poll only when needed gives a better performance with the cost of possibly losing some frames on the TX side. Signed-off-by: Ciprian Barbu --- platform/linux-netmap/odp_packet_netmap.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/platform/linux-netmap/odp_packet_netmap.c b/platform/linux-netmap/odp_packet_netmap.c index 8e68d34..50062ea 100644 --- a/platform/linux-netmap/odp_packet_netmap.c +++ b/platform/linux-netmap/odp_packet_netmap.c @@ -318,13 +318,14 @@ int recv_pkt_netmap(pkt_netmap_t * const pkt_nm, odp_packet_t pkt_table[], args.pkt_nm = pkt_nm; odp_ticketlock_lock(&pkt_nm->nm_dev->rx_lock); - ret = poll(fds, 1, POLL_TMO); - if (ret <= 0 || (fds[0].revents & POLLERR)) { - odp_ticketlock_unlock(&pkt_nm->nm_dev->rx_lock); - return 0; - } - nm_dispatch(pkt_nm->desc, len, nm_recv_cb, (uint8_t *)&args); + if (args.nb_rx == 0) { + ret = poll(fds, 1, POLL_TMO); + if (ret <= 0 || (fds[0].revents & POLLERR)) { + odp_ticketlock_unlock(&pkt_nm->nm_dev->rx_lock); + return 0; + } + } odp_ticketlock_unlock(&pkt_nm->nm_dev->rx_lock); return args.nb_rx; @@ -342,12 +343,6 @@ int send_pkt_netmap(pkt_netmap_t * const pkt_nm, odp_packet_t pkt_table[], fds[0].events = POLLOUT; odp_ticketlock_lock(&pkt_nm->nm_dev->tx_lock); - ret = poll(fds, 1, POLL_TMO); - if (ret <= 0 || (fds[0].revents & POLLERR)) { - odp_ticketlock_unlock(&pkt_nm->nm_dev->tx_lock); - goto out; - } - for (nb_tx = 0; nb_tx < len; nb_tx++) { odp_packet_t pkt = pkt_table[nb_tx]; uint8_t *frame = odp_packet_l2(pkt); @@ -355,6 +350,13 @@ int send_pkt_netmap(pkt_netmap_t * const pkt_nm, odp_packet_t pkt_table[], if (nm_inject(pkt_nm->desc, frame, frame_len) == 0) break; } + if (nb_tx == 0) { + ret = poll(fds, 1, POLL_TMO); + if (ret <= 0 || (fds[0].revents & POLLERR)) { + odp_ticketlock_unlock(&pkt_nm->nm_dev->tx_lock); + goto out; + } + } odp_ticketlock_unlock(&pkt_nm->nm_dev->tx_lock); out: