From patchwork Wed Nov 29 14:00:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 120004 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3091491qgn; Wed, 29 Nov 2017 06:01:35 -0800 (PST) X-Google-Smtp-Source: AGs4zMauhiWnWPph1/vfOyZv/MtxEZR6+PDKY9HVdAI8f4Oym9qfyBp+7h7hlUfBemVsYjIXxkns X-Received: by 10.200.19.11 with SMTP id e11mr4544262qtj.62.1511964094832; Wed, 29 Nov 2017 06:01:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511964094; cv=none; d=google.com; s=arc-20160816; b=noJHWzQ1rK7UTUvoio258P6ZYDKI5d9LIw716cZaI+j9Kwz2WjqhkJXZSvmvLZH+S0 nAOMWOP1lw5Sibm1ofeoi6mxIWlaqmrNhRCQE7FhseDed05I5iO+pfRPB/uqnze0dAzC cf3eoUHXXpcJKa+EZYpo4jDoVAiQFPrUo4CBnIKrZNXBJa/iQCd9GkwN5xl/+fK1wfPd lEeDjU4bqvcpG5sR72z9q6q15x/o2MXj2JnODhsvrn+usxYpX4BPdcUWruOy3WaaAEgf DILzbBXWrjs37ruk0GP/Ub2/fcJVy4E/rWMpqwM3oJ8OZQPRHT3B+HCrJcZHRpWKTipr J6vw== 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=IgxshvV5TtvfTQ9XOtfbtBh3QcmvQuvkpCYWdIX6Qtw=; b=clODdsl/mFtx2qrh3AC0VLxaazQDw0JuVbHwb/aa0oWc/G2DcAG4PoZPwLl4egHjWM 77z9IUCgYhPzH7qWMuWHWW+9fmsjKa2vtG47NL4nahbEUAYd32ECO4Q79ZbJDc6kgTO7 B5MeaZ8cjfqPj49BhsSCPLkHyvJdPdSeEzfvhgFHuaW+EaJ+3njj5VfuiiDVH/0jwIPK r8h+V4eCKmJAkDelMoBHq8IiDa+cVhmG0FxlVteRlOu3c7Ne5YSFOkUNx+bm/ez7+Bh2 1qXE8hv8eX1pQqR93VH4DhYUn4bna+m9kQKVkIP4Ddob3VIFxPY+9qc5qmwaiNyOo10X ppFQ== 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 m30si1785313qtd.198.2017.11.29.06.01.34; Wed, 29 Nov 2017 06:01:34 -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 8950A6074A; Wed, 29 Nov 2017 14:01:34 +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,URIBL_BLOCKED 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 291F1608ED; Wed, 29 Nov 2017 14:00:47 +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 08C9E6072F; Wed, 29 Nov 2017 14:00:32 +0000 (UTC) Received: from forward103j.mail.yandex.net (forward103j.mail.yandex.net [5.45.198.246]) by lists.linaro.org (Postfix) with ESMTPS id 50AB06072F for ; Wed, 29 Nov 2017 14:00:30 +0000 (UTC) Received: from mxback5g.mail.yandex.net (mxback5g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:166]) by forward103j.mail.yandex.net (Yandex) with ESMTP id BE2EC34C3CDC for ; Wed, 29 Nov 2017 17:00:28 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback5g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id XFypqqJ6jH-0Sg0sWrD; Wed, 29 Nov 2017 17:00:28 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id AIVWVflXkM-0Im0fRKK; Wed, 29 Nov 2017 17:00:18 +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: Wed, 29 Nov 2017 17:00:02 +0300 Message-Id: <1511964006-11004-2-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> References: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 313 Subject: [lng-odp] [PATCH API-NEXT v1 1/5] api: pktio: add checksum insert enable bits 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: Petri Savolainen Added bits to control if checksum insertion is enabled / disabled at packet output. Current configuration options control if checksum is inserted / not inserted by default, but leaves it open for application to request checksum always with override functions. Explicit disable allows implementation to optimize performance (e.g. DPDK does this). Signed-off-by: Petri Savolainen --- /** Email created from pull request 313 (psavol:next-pktout-config) ** https://github.com/Linaro/odp/pull/313 ** Patch: https://github.com/Linaro/odp/pull/313.patch ** Base sha: 4cb02e1caccb9179575e95448fd46979e17d0905 ** Merge commit sha: 5d0d0efcb77baf5b9db803a8a8b89450e27aff38 **/ include/odp/api/spec/packet.h | 4 +-- include/odp/api/spec/packet_io.h | 62 ++++++++++++++++++++++++++++------------ 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/include/odp/api/spec/packet.h b/include/odp/api/spec/packet.h index b897c9d3c..1dbbfafe6 100644 --- a/include/odp/api/spec/packet.h +++ b/include/odp/api/spec/packet.h @@ -1531,7 +1531,7 @@ odp_packet_chksum_status_t odp_packet_l4_chksum_status(odp_packet_t pkt); * * Calling this function is always allowed but the checksum will not be * inserted if the packet is output through a pktio that does not have - * the relevant pktout chksum bit set in the pktio capability. + * the relevant checksum insertion enabled. * * @param pkt Packet handle * @param insert 0: do not insert L3 checksum @@ -1548,7 +1548,7 @@ void odp_packet_l3_chksum_insert(odp_packet_t pkt, int insert); * * Calling this function is always allowed but the checksum will not be * inserted if the packet is output through a pktio that does not have - * the relevant pktout chksum bit set in the pktio capability. + * the relevant checksum insertion enabled. * * @param pkt Packet handle * @param insert 0: do not insert L4 checksum diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h index 6e4f88100..3798c048e 100644 --- a/include/odp/api/spec/packet_io.h +++ b/include/odp/api/spec/packet_io.h @@ -329,15 +329,29 @@ typedef union odp_pktin_config_opt_t { * Packet output configuration options bit field * * Packet output configuration options listed in a bit field structure. Packet - * output checksum insertion may be enabled or disabled. When it is enabled, - * implementation will calculate and insert checksum into every outgoing packet - * by default. Application may disable checksum insertion (e.g. - * odp_packet_l4_chksum_insert()) on per packet basis. For correct operation, - * packet metadata must provide valid offsets for the appropriate protocols. - * For example, UDP checksum calculation needs both L3 and L4 offsets (to access - * IP and UDP headers). When application (e.g. a switch) does not modify L3/L4 - * data and thus checksum does not need to be updated, output checksum insertion - * should be disabled for optimal performance. + * output checksum insertion may be enabled or disabled (e.g. ipv4_chksum_ena): + * + * 0: Disable checksum insertion. Application will not request checksum + * insertion for any packet. This is the default value for xxx_chksum_ena + * bits. + * 1: Enable checksum insertion. Application will request checksum insertion + * for some packets. + * + * When checksum insertion is enabled, application may use configuration options + * to set the default behaviour on packet output (e.g. ipv4_chksum): + * + * 0: Do not insert checksum by default. This is the default value for + * xxx_chksum bits. + * 1: Calculate and insert checksum by default. + * + * These defaults may be overridden on per packet basis using e.g. + * odp_packet_l4_chksum_insert(). + * + * For correct operation, packet metadata must provide valid offsets for the + * appropriate protocols. For example, UDP checksum calculation needs both L3 + * and L4 offsets (to access IP and UDP headers). When application + * (e.g. a switch) does not modify L3/L4 data and thus checksum does not need + * to be updated, checksum insertion should be disabled for optimal performance. * * Packet flags (odp_packet_has_*()) are ignored for the purpose of checksum * insertion in packet output. @@ -354,19 +368,31 @@ typedef union odp_pktin_config_opt_t { * insertion. */ typedef union odp_pktout_config_opt_t { - /** Option flags */ + /** Option flags for packet output */ struct { - /** Insert IPv4 header checksum on packet output */ - uint64_t ipv4_chksum : 1; + /** Enable IPv4 header checksum insertion. */ + uint64_t ipv4_chksum_ena : 1; + + /** Enable UDP checksum insertion */ + uint64_t udp_chksum_ena : 1; + + /** Enable TCP checksum insertion */ + uint64_t tcp_chksum_ena : 1; + + /** Enable SCTP checksum insertion */ + uint64_t sctp_chksum_ena : 1; + + /** Insert IPv4 header checksum by default */ + uint64_t ipv4_chksum : 1; - /** Insert UDP checksum on packet output */ - uint64_t udp_chksum : 1; + /** Insert UDP checksum on packet by default */ + uint64_t udp_chksum : 1; - /** Insert TCP checksum on packet output */ - uint64_t tcp_chksum : 1; + /** Insert TCP checksum on packet by default */ + uint64_t tcp_chksum : 1; - /** Insert SCTP checksum on packet output */ - uint64_t sctp_chksum : 1; + /** Insert SCTP checksum on packet by default */ + uint64_t sctp_chksum : 1; } bit; From patchwork Wed Nov 29 14:00:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 120005 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3093114qgn; Wed, 29 Nov 2017 06:02:37 -0800 (PST) X-Google-Smtp-Source: AGs4zMa9jXDRV4ZKNxftRyKl4o1i0Z6of8Yp8kZy9uytLnmhCIUJdLIzmlHQEFqftXXz33/dLm81 X-Received: by 10.237.34.45 with SMTP id n42mr4782285qtc.12.1511964157562; Wed, 29 Nov 2017 06:02:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511964157; cv=none; d=google.com; s=arc-20160816; b=KJArPWcns7IbXfehfFpZtXC+2+knNq4IeYD0/JMBhsBVH8XJcwO0txDOW6Nn9xa/9+ uO4p8ahoa8yW2qWcEPg+6GN7AfDmUOXeTsXumeKRKl5s2nt+jnzybUwHAVmpIwsfucie SUDsrMRM0f3bbvQRY/Rxt+bOyaQGyF1H7nHFDdbJ0Rf5PU7Vozf5Mtt8M4GfcyE92KTQ obqDZjYFVdKWRJrHgr1sBN9x8yUxDY+KEAdB7d4stnIxWrS1aPSOOTeY0+M48dCJ9mK+ Y9nYzNazo8gTlpkT+BP5VC3zqoksjNYf4V8iIfYUEv2hBHCOB+8wz+C4mMQ8E/dTBXzw 4v1w== 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=ox0F48ke2eLvFwNhSyZh/NRlt3isegkoOyUx+WAUzmg=; b=cXQpk6kO/5ftLuotqSB3l/xlGA4Mm9yat7U5yOEsRdbX6TLaompwJsI92jJ66a2I9j zuTk3X8yl3z77P0Epkvy7lc+jOcPiSCKabR6FS5SIaCK1xp1hPAYOV+3s/uD2dmBFJeh hOuQSElHtbPRlFfHGzajwtpGAIHJcomHNNzWMQ2sQ612ppSAp4X5xtLDRik+OlFWLKkZ yte4xbsb9skw55MlAsK049943r0LrE9yUqFdZ6kieNZ2l4hqPlUdwjVaNhW3OKWCxWOs K+GWdhh3ExpZphkMkf6EBsuRey+j+JdQ5T/7i/5SLj/9p7VNdDMKOaw581nYddv7ZfEq tXKw== 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 b83si1029705qkj.414.2017.11.29.06.02.37; Wed, 29 Nov 2017 06:02:37 -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 28046608E6; Wed, 29 Nov 2017 14:02:37 +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_H3, RCVD_IN_MSPIKE_WL 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 11A79608ED; Wed, 29 Nov 2017 14:01:42 +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 00934608FF; Wed, 29 Nov 2017 14:01:33 +0000 (UTC) Received: from forward100o.mail.yandex.net (forward100o.mail.yandex.net [37.140.190.180]) by lists.linaro.org (Postfix) with ESMTPS id EF5D560667 for ; Wed, 29 Nov 2017 14:00:44 +0000 (UTC) Received: from mxback2o.mail.yandex.net (mxback2o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1c]) by forward100o.mail.yandex.net (Yandex) with ESMTP id 754512A23E0B for ; Wed, 29 Nov 2017 17:00:39 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback2o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id JOHNbQw10z-0d8O2Stt; Wed, 29 Nov 2017 17:00:39 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id AIVWVflXkM-0SmO3Ast; Wed, 29 Nov 2017 17:00:28 +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: Wed, 29 Nov 2017 17:00:03 +0300 Message-Id: <1511964006-11004-3-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> References: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 313 Subject: [lng-odp] [PATCH API-NEXT v1 2/5] example: generator use checksum enable 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: Petri Savolainen Use new checksum insert enable bits. Signed-off-by: Petri Savolainen --- /** Email created from pull request 313 (psavol:next-pktout-config) ** https://github.com/Linaro/odp/pull/313 ** Patch: https://github.com/Linaro/odp/pull/313.patch ** Base sha: 4cb02e1caccb9179575e95448fd46979e17d0905 ** Merge commit sha: 5d0d0efcb77baf5b9db803a8a8b89450e27aff38 **/ example/generator/odp_generator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/example/generator/odp_generator.c b/example/generator/odp_generator.c index e1d98539f..81d954662 100644 --- a/example/generator/odp_generator.c +++ b/example/generator/odp_generator.c @@ -523,6 +523,10 @@ static int create_pktio(const char *dev, odp_pool_t pool, capa.config.pktin.bit.drop_ipv4_err; itf->config.pktin.bit.drop_udp_err = capa.config.pktin.bit.drop_udp_err; + itf->config.pktout.bit.ipv4_chksum_ena = + capa.config.pktout.bit.ipv4_chksum_ena; + itf->config.pktout.bit.udp_chksum_ena = + capa.config.pktout.bit.udp_chksum_ena; itf->config.pktout.bit.ipv4_chksum = capa.config.pktout.bit.ipv4_chksum; itf->config.pktout.bit.udp_chksum = capa.config.pktout.bit.udp_chksum; From patchwork Wed Nov 29 14:00:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 120006 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3094454qgn; Wed, 29 Nov 2017 06:03:32 -0800 (PST) X-Google-Smtp-Source: AGs4zMbR+IKVCfIVfb12NFYvvaWfLDTVMgdRz7UpHuK/xchCoERZXUjAMHkhpoXcODnkP5dcQyD5 X-Received: by 10.237.36.114 with SMTP id s47mr4536190qtc.144.1511964212758; Wed, 29 Nov 2017 06:03:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511964212; cv=none; d=google.com; s=arc-20160816; b=guu9tSByMRi+8gIZJoSFSy7rFRLysIqFED/ORe/2/cSuvq9COtSiAakAlxFmxsnOpc JZJ7dv6s+5ImpS+kAN6IqQzcYjkbC0GGbptB2hRmov3Nj/k+edi7HMJ7PdL3ih8YPsrk L0FafQXHJIIq/xIIS4HF50Me06vkdYwzxlKh6wPcLDz0SvUo5fNanfkoLAByf0iVas5g fvZ0IMS8P9uWR0CgN/wAO8I5AYvWZ0i2WjpaAmK04xFpU1enJf7nP3jiJqlGV6GJF00J ZmxwtxtD4YR0+IK9USR5mp9Y/0wd3Se48sICNYIaPWZ0Xi5XW7Nm8pJoBfWR6ubOb4rB b+3A== 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=lPNOjPYCTOJ4X2H7MvOL9Jg0/Vnyfgs3iQnR2MLihb0=; b=qggtrNZkUsvY81Bs8wyYDibsJtl1kxmSqedKldmiqHwUFpW1y08IUoOZdGJIwQiURs DquSj6b6AZqrHCmC1//9UFgPyZD1j/bp9jGp2jYMqc9B2ooptt852g0yPSZBEH3U6W+V 645T8fwsPHmKI9mU2O6LLS8iC0XyFggcAjZ2xFMvS9Z6de3LkQDkW16EtKu5NG9sXb4F ZRJs9IciToCoLd0LXuqKEMlX/JoSKrAm7n1pe6haZ5MAY0oXWUnD5XK6I2rvh5qkVR2u jluDK+v9ZQopJGOE01Jhd/9FIzv9MEvhOfALPO4Kon0NpXESPaqMztLfFyvmIQJq8Zp4 EIyQ== 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 y30si1822289qtd.14.2017.11.29.06.03.32; Wed, 29 Nov 2017 06:03:32 -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 79E9C60956; Wed, 29 Nov 2017 14:03:32 +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_H3,RCVD_IN_MSPIKE_WL,URIBL_BLOCKED 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 B9C3560923; Wed, 29 Nov 2017 14:02:29 +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 DE3196092D; Wed, 29 Nov 2017 14:02:24 +0000 (UTC) Received: from forward103p.mail.yandex.net (forward103p.mail.yandex.net [77.88.28.106]) by lists.linaro.org (Postfix) with ESMTPS id 1C9966072F for ; Wed, 29 Nov 2017 14:00:52 +0000 (UTC) Received: from mxback9g.mail.yandex.net (mxback9g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:170]) by forward103p.mail.yandex.net (Yandex) with ESMTP id 541FE2187022 for ; Wed, 29 Nov 2017 17:00:50 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback9g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id wXxgRQNl0H-0oi022ia; Wed, 29 Nov 2017 17:00:50 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id AIVWVflXkM-0dmGLpRP; Wed, 29 Nov 2017 17:00:39 +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: Wed, 29 Nov 2017 17:00:04 +0300 Message-Id: <1511964006-11004-4-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> References: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 313 Subject: [lng-odp] [PATCH API-NEXT v1 3/5] linux-gen: dpdk: use checksum insert enable config 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: Petri Savolainen Enable checksum insertion only when requested. DPDK uses less optimized driver code (on Intel NICs at least) when any of the L4 checksum offloads is enabled. Signed-off-by: Petri Savolainen --- /** Email created from pull request 313 (psavol:next-pktout-config) ** https://github.com/Linaro/odp/pull/313 ** Patch: https://github.com/Linaro/odp/pull/313.patch ** Base sha: 4cb02e1caccb9179575e95448fd46979e17d0905 ** Merge commit sha: 5d0d0efcb77baf5b9db803a8a8b89450e27aff38 **/ platform/linux-generic/pktio/dpdk.c | 48 ++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index ccccc0a8a..430eb8df4 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -123,6 +123,7 @@ static inline void mbuf_update(struct rte_mbuf *mbuf, odp_packet_hdr_t *pkt_hdr, mbuf->data_len = pkt_len; mbuf->pkt_len = pkt_len; mbuf->refcnt = 1; + mbuf->ol_flags = 0; if (odp_unlikely(pkt_hdr->buf_hdr.base_data != pkt_hdr->buf_hdr.seg[0].data)) @@ -1246,6 +1247,13 @@ static void dpdk_init_capability(pktio_entry_t *pktio_entry, (dev_info->tx_offload_capa & DEV_TX_OFFLOAD_UDP_CKSUM) ? 1 : 0; capa->config.pktout.bit.tcp_chksum = (dev_info->tx_offload_capa & DEV_TX_OFFLOAD_TCP_CKSUM) ? 1 : 0; + + capa->config.pktout.bit.ipv4_chksum_ena = + capa->config.pktout.bit.ipv4_chksum; + capa->config.pktout.bit.udp_chksum_ena = + capa->config.pktout.bit.udp_chksum; + capa->config.pktout.bit.tcp_chksum_ena = + capa->config.pktout.bit.tcp_chksum; } static int dpdk_open(odp_pktio_t id ODP_UNUSED, @@ -1381,9 +1389,47 @@ static int dpdk_start(pktio_entry_t *pktio_entry) } /* Init TX queues */ for (i = 0; i < pktio_entry->s.num_out_queue; i++) { + struct rte_eth_dev_info dev_info; + const struct rte_eth_txconf *txconf = NULL; + int ip_ena = pktio_entry->s.config.pktout.bit.ipv4_chksum_ena; + int udp_ena = pktio_entry->s.config.pktout.bit.udp_chksum_ena; + int tcp_ena = pktio_entry->s.config.pktout.bit.tcp_chksum_ena; + int sctp_ena = pktio_entry->s.config.pktout.bit.sctp_chksum_ena; + int chksum_ena = ip_ena | udp_ena | tcp_ena | sctp_ena; + + if (chksum_ena) { + /* Enable UDP, TCP, STCP checksum offload */ + uint32_t txq_flags = 0; + + if (udp_ena == 0) + txq_flags |= ETH_TXQ_FLAGS_NOXSUMUDP; + + if (tcp_ena == 0) + txq_flags |= ETH_TXQ_FLAGS_NOXSUMTCP; + + if (sctp_ena == 0) + txq_flags |= ETH_TXQ_FLAGS_NOXSUMSCTP; + + /* When IP checksum is requested alone, enable UDP + * offload. DPDK IP checksum offload is enabled only + * when one of the L4 checksum offloads is requested.*/ + if ((udp_ena == 0) && (tcp_ena == 0) && (sctp_ena == 0)) + txq_flags = ETH_TXQ_FLAGS_NOXSUMTCP | + ETH_TXQ_FLAGS_NOXSUMSCTP; + + txq_flags |= ETH_TXQ_FLAGS_NOMULTSEGS | + ETH_TXQ_FLAGS_NOREFCOUNT | + ETH_TXQ_FLAGS_NOMULTMEMP | + ETH_TXQ_FLAGS_NOVLANOFFL; + + rte_eth_dev_info_get(port_id, &dev_info); + dev_info.default_txconf.txq_flags = txq_flags; + txconf = &dev_info.default_txconf; + } + ret = rte_eth_tx_queue_setup(port_id, i, DPDK_NM_TX_DESC, rte_eth_dev_socket_id(port_id), - NULL); + txconf); if (ret < 0) { ODP_ERR("Queue setup failed: err=%d, port=%" PRIu8 "\n", ret, port_id); From patchwork Wed Nov 29 14:00:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 120008 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3097581qgn; Wed, 29 Nov 2017 06:05:35 -0800 (PST) X-Google-Smtp-Source: AGs4zMYxULjBmc+Y3rv4RtsppoGKxFAqp2q5jlD0IU/E6Ond2AShI9tXSQQ2Uxi0QUsnhWUzRYns X-Received: by 10.55.55.146 with SMTP id e140mr4220899qka.106.1511964335678; Wed, 29 Nov 2017 06:05:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511964335; cv=none; d=google.com; s=arc-20160816; b=KixbhZEbXI/paO3H9IAEl+qKdEzSqjWx+SJwlcGufu6cZ7zXyv0RFAJ5cfm4kGzSBS 5LkTdbFBftMnmIChjNTsF2+7HJaZjjc9UyMfOENwDITkH8BL/RuVMfd5wqi3vMu4CtOU Sy85U1Jvra0inWg+vvsV+jYcYNMAGzHfQv4V7muycbxkFegTb4h1tUCO8IDd+kuswwCM vTOJsGt//gSbWbDW17uxG+e9y2DcE8ubxMA36/bV16cA4l+z/Dr2K1erOjkNS6YE33Kq MSc2c26ZJlox+UIpqhcwjtBr/e669ZZW7DFnHCi+2sYv5ZHMyrhYJb3K8g89OxqXvLR5 /d9Q== 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=DaX4OMm+1AbK1wXjm4fbneziUM20MnIf2wxIq+i4Vyw=; b=ar1ECdFr3vLWcayBgfS4NFj7UtqKdiKUgG+SCCf8ktVSW66LBe1rJez0gkgWe8kQ0N wKeXDMSDcPiNoLdoH41HF+DtrY5hasvecenpGRv+DYuG1NcScTXgABRvxxznRxWjUc7V yNyI1y6+0UFX/Uk6tG4iFI25lPeUFC0tZECnYb6v91t8gSQRqJJFXdJQONp0M3+lmujX P0TN8rhT26ozOZhZKW71v0xm85cEGP/kVbqQ1IAthX5pENgKiKBo+BOXmoD4KaaQ/4Y8 Hjk0RWsA6gkmC/Hl2/uQKZ3ZWBOFo5Ap6tgrHzPhAAsz9wG37fvchjKSRAxQFpcwnhfE zjbQ== 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 p15si1829242qtp.428.2017.11.29.06.05.35; Wed, 29 Nov 2017 06:05:35 -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 5EBAD60927; Wed, 29 Nov 2017 14:05:35 +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=-5.4 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, URIBL_BLOCKED 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 B81CC60940; Wed, 29 Nov 2017 14:02:45 +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 D3BAE608E6; Wed, 29 Nov 2017 14:02:33 +0000 (UTC) Received: from forward101p.mail.yandex.net (forward101p.mail.yandex.net [77.88.28.101]) by lists.linaro.org (Postfix) with ESMTPS id D3B35608F6 for ; Wed, 29 Nov 2017 14:01:02 +0000 (UTC) Received: from mxback3o.mail.yandex.net (mxback3o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::1d]) by forward101p.mail.yandex.net (Yandex) with ESMTP id 18B3C6A862C0 for ; Wed, 29 Nov 2017 17:01:01 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback3o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id G9YfBQFQUt-10aWHL34; Wed, 29 Nov 2017 17:01:01 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id AIVWVflXkM-0omSeVuZ; Wed, 29 Nov 2017 17:00:50 +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: Wed, 29 Nov 2017 17:00:05 +0300 Message-Id: <1511964006-11004-5-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> References: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 313 Subject: [lng-odp] [PATCH API-NEXT v1 4/5] test: l2fwd: add checksum offload option 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: Petri Savolainen Added option to enable checksum insertion at packet output. This can be used to test checksum offload in various packet IO combinations. Signed-off-by: Petri Savolainen --- /** Email created from pull request 313 (psavol:next-pktout-config) ** https://github.com/Linaro/odp/pull/313 ** Patch: https://github.com/Linaro/odp/pull/313.patch ** Base sha: 4cb02e1caccb9179575e95448fd46979e17d0905 ** Merge commit sha: 5d0d0efcb77baf5b9db803a8a8b89450e27aff38 **/ test/performance/odp_l2fwd.c | 104 +++++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 29 deletions(-) diff --git a/test/performance/odp_l2fwd.c b/test/performance/odp_l2fwd.c index 42d8f49a2..874e6cf67 100644 --- a/test/performance/odp_l2fwd.c +++ b/test/performance/odp_l2fwd.c @@ -92,6 +92,7 @@ static inline int sched_mode(pktin_mode_t in_mode) * Parsed command line application arguments */ typedef struct { + int extra_check; /**< Some extra checks have been enabled */ int cpu_count; int if_count; /**< Number of interfaces to be used */ int addr_count; /**< Number of dst addresses to be used */ @@ -106,6 +107,7 @@ typedef struct { int dst_change; /**< Change destination eth addresses */ int src_change; /**< Change source eth addresses */ int error_check; /**< Check packet errors */ + int chksum; /**< Checksum offload */ int sched_mode; /**< Scheduler mode */ int num_groups; /**< Number of scheduling groups */ } appl_args_t; @@ -292,6 +294,18 @@ static inline int event_queue_send(odp_queue_t queue, odp_packet_t *pkt_tbl, return sent; } +static inline void chksum_insert(odp_packet_t *pkt_tbl, int pkts) +{ + odp_packet_t pkt; + int i; + + for (i = 0; i < pkts; i++) { + pkt = pkt_tbl[i]; + odp_packet_l3_chksum_insert(pkt, 1); + odp_packet_l4_chksum_insert(pkt, 1); + } +} + /** * Packet IO worker thread using scheduled queues * @@ -365,18 +379,23 @@ static int run_worker_sched_mode(void *arg) for (i = 0; i < pkts; i++) pkt_tbl[i] = odp_packet_from_event(ev_tbl[i]); - if (gbl_args->appl.error_check) { - int rx_drops; + if (odp_unlikely(gbl_args->appl.extra_check)) { + if (gbl_args->appl.chksum) + chksum_insert(pkt_tbl, pkts); - /* Drop packets with errors */ - rx_drops = drop_err_pkts(pkt_tbl, pkts); + if (gbl_args->appl.error_check) { + int rx_drops; - if (odp_unlikely(rx_drops)) { - stats->s.rx_drops += rx_drops; - if (pkts == rx_drops) - continue; + /* Drop packets with errors */ + rx_drops = drop_err_pkts(pkt_tbl, pkts); - pkts -= rx_drops; + if (odp_unlikely(rx_drops)) { + stats->s.rx_drops += rx_drops; + if (pkts == rx_drops) + continue; + + pkts -= rx_drops; + } } } @@ -486,18 +505,23 @@ static int run_worker_plain_queue_mode(void *arg) for (i = 0; i < pkts; i++) pkt_tbl[i] = odp_packet_from_event(event[i]); - if (gbl_args->appl.error_check) { - int rx_drops; + if (odp_unlikely(gbl_args->appl.extra_check)) { + if (gbl_args->appl.chksum) + chksum_insert(pkt_tbl, pkts); - /* Drop packets with errors */ - rx_drops = drop_err_pkts(pkt_tbl, pkts); + if (gbl_args->appl.error_check) { + int rx_drops; - if (odp_unlikely(rx_drops)) { - stats->s.rx_drops += rx_drops; - if (pkts == rx_drops) - continue; + /* Drop packets with errors */ + rx_drops = drop_err_pkts(pkt_tbl, pkts); - pkts -= rx_drops; + if (odp_unlikely(rx_drops)) { + stats->s.rx_drops += rx_drops; + if (pkts == rx_drops) + continue; + + pkts -= rx_drops; + } } } @@ -604,18 +628,23 @@ static int run_worker_direct_mode(void *arg) if (odp_unlikely(pkts <= 0)) continue; - if (gbl_args->appl.error_check) { - int rx_drops; + if (odp_unlikely(gbl_args->appl.extra_check)) { + if (gbl_args->appl.chksum) + chksum_insert(pkt_tbl, pkts); + + if (gbl_args->appl.error_check) { + int rx_drops; - /* Drop packets with errors */ - rx_drops = drop_err_pkts(pkt_tbl, pkts); + /* Drop packets with errors */ + rx_drops = drop_err_pkts(pkt_tbl, pkts); - if (odp_unlikely(rx_drops)) { - stats->s.rx_drops += rx_drops; - if (pkts == rx_drops) - continue; + if (odp_unlikely(rx_drops)) { + stats->s.rx_drops += rx_drops; + if (pkts == rx_drops) + continue; - pkts -= rx_drops; + pkts -= rx_drops; + } } } @@ -703,9 +732,17 @@ static int create_pktio(const char *dev, int idx, int num_rx, int num_tx, } odp_pktio_config_init(&config); - config.parser.layer = gbl_args->appl.error_check ? + config.parser.layer = gbl_args->appl.extra_check ? ODP_PKTIO_PARSER_LAYER_ALL : ODP_PKTIO_PARSER_LAYER_NONE; + + if (gbl_args->appl.chksum) { + printf("Checksum offload enabled\n"); + config.pktout.bit.ipv4_chksum_ena = 1; + config.pktout.bit.udp_chksum_ena = 1; + config.pktout.bit.tcp_chksum_ena = 1; + } + odp_pktio_config(pktio, &config); odp_pktin_queue_param_init(&pktin_param); @@ -1128,6 +1165,8 @@ static void usage(char *progname) " Requires also the -d flag to be set\n" " -e, --error_check 0: Don't check packet errors (default)\n" " 1: Check packet errors\n" + " -k, --chksum 0: Don't use checksum offload (default)\n" + " 1: Use checksum offload\n" " -g, --groups Number of groups to use: 0 ... num\n" " 0: SCHED_GROUP_ALL (default)\n" " num: must not exceed number of interfaces or workers\n" @@ -1162,12 +1201,13 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args) {"dst_change", required_argument, NULL, 'd'}, {"src_change", required_argument, NULL, 's'}, {"error_check", required_argument, NULL, 'e'}, + {"chksum", required_argument, NULL, 'k'}, {"groups", required_argument, NULL, 'g'}, {"help", no_argument, NULL, 'h'}, {NULL, 0, NULL, 0} }; - static const char *shortopts = "+c:+t:+a:i:m:o:r:d:s:e:g:h"; + static const char *shortopts = "+c:+t:+a:i:m:o:r:d:s:e:k:g:h"; /* let helper collect its own arguments (e.g. --odph_proc) */ odph_parse_options(argc, argv, shortopts, longopts); @@ -1178,6 +1218,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args) appl_args->src_change = 1; /* change eth src address by default */ appl_args->num_groups = 0; /* use default group */ appl_args->error_check = 0; /* don't check packet errors by default */ + appl_args->chksum = 0; /* don't use checksum offload by default */ opterr = 0; /* do not issue errors on helper options */ @@ -1302,6 +1343,9 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args) case 'e': appl_args->error_check = atoi(optarg); break; + case 'k': + appl_args->chksum = atoi(optarg); + break; case 'g': appl_args->num_groups = atoi(optarg); break; @@ -1326,6 +1370,8 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args) exit(EXIT_FAILURE); } + appl_args->extra_check = appl_args->error_check || appl_args->chksum; + optind = 1; /* reset 'extern optind' from the getopt lib */ } From patchwork Wed Nov 29 14:00:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Github ODP bot X-Patchwork-Id: 120007 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp3095563qgn; Wed, 29 Nov 2017 06:04:13 -0800 (PST) X-Google-Smtp-Source: AGs4zMZLBqIFUkb2BSm9OYUqXqm79DeUWVyWRHz0TU0mssMfgdbWJpZm1MtB6RKEnd4pRHxafVWf X-Received: by 10.55.158.6 with SMTP id h6mr4160722qke.355.1511964253531; Wed, 29 Nov 2017 06:04:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511964253; cv=none; d=google.com; s=arc-20160816; b=BDeJEhKibQQ5Co3g0MRGgI0P0iRUGVeA+eIDSZlDlsR1/7PJFy9t/uw3MCl0AaDiD9 xFyRO07vRzHklLJaHqjY5u/fePYP1b94EYQfCJczqgVv5Kv7dxN2ZvcGTaiUm7NBYcjy CfEPI3gkhpGiuW6cPytJs4Sclh0TwNRdrNE+J4Dh/ZvbtK68/T6xrJLlCC5QK+ArDg1g EK6Rxaya0N8+DSNb5wlwnquK5ocYQvaQ/blCHjORg76BMCrWYMKlURUf/7fd5vTz+B+m 5fJj6x7glMJCQik20zh48Jchhl12i+fInWRAUbfL4/51ZUX2F30VeJ+2ODnYktajVyhX SDfQ== 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=bfxWHf/lsS+9j2zTlDB2fEpTYhn6P5yDzciuwmsroSU=; b=NJ6vshh4Nz4l/A/hQSjY/FEm9IBP/DfVQqA32EmdXsDVVCcODfIc7+uPDcmjGDGNc5 FhwHrbQrB7Xqj7T5sq0wuq7BGEtP4fkvjLJfEgrWEDHO5MLJSHVJcl1WQ+43geZrvGNc ZqQZthxFjHVbrhA20+1u1H+puRjY7QGmXCiISoLW5hMy/mCEzTEo5zL6DmOU0ngjmbig fNsk9tTGPlGFUH17iPf7nIzFV0b58VqEKLvouROZX/i2RXykwy/kq2HFEfogXPUQ6L4e m0Bl5nOg2InyaD9GYY2q1Ape4D8A2enOSZUPWS67d/HYRUMTiAyF1VdLAbWK0c8f8Dcv aA2Q== 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 v15si502285qkb.14.2017.11.29.06.04.13; Wed, 29 Nov 2017 06:04:13 -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 2C31D60916; Wed, 29 Nov 2017 14:04:13 +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,URIBL_BLOCKED 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 72E18608E6; Wed, 29 Nov 2017 14:02:41 +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 19832608FD; Wed, 29 Nov 2017 14:02:33 +0000 (UTC) Received: from forward101j.mail.yandex.net (forward101j.mail.yandex.net [5.45.198.241]) by lists.linaro.org (Postfix) with ESMTPS id 02942608E6 for ; Wed, 29 Nov 2017 14:01:13 +0000 (UTC) Received: from mxback5g.mail.yandex.net (mxback5g.mail.yandex.net [IPv6:2a02:6b8:0:1472:2741:0:8b7:166]) by forward101j.mail.yandex.net (Yandex) with ESMTP id B013E12478F1 for ; Wed, 29 Nov 2017 17:01:11 +0300 (MSK) Received: from smtp1p.mail.yandex.net (smtp1p.mail.yandex.net [2a02:6b8:0:1472:2741:0:8b6:6]) by mxback5g.mail.yandex.net (nwsmtp/Yandex) with ESMTP id qxclnjieqD-1Bgq0BHe; Wed, 29 Nov 2017 17:01:11 +0300 Received: by smtp1p.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id AIVWVflXkM-11mCi0qV; Wed, 29 Nov 2017 17:01:01 +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: Wed, 29 Nov 2017 17:00:06 +0300 Message-Id: <1511964006-11004-6-git-send-email-odpbot@yandex.ru> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> References: <1511964006-11004-1-git-send-email-odpbot@yandex.ru> Github-pr-num: 313 Subject: [lng-odp] [PATCH API-NEXT v1 5/5] linux-gen: dpdk: checksum insert enabled flag 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: Petri Savolainen Added interface level flag to optimize checksum insertion checks. If checksum insertion has not been enabled, further configuration or packet level checks are not performed. Signed-off-by: Petri Savolainen --- /** Email created from pull request 313 (psavol:next-pktout-config) ** https://github.com/Linaro/odp/pull/313 ** Patch: https://github.com/Linaro/odp/pull/313.patch ** Base sha: 4cb02e1caccb9179575e95448fd46979e17d0905 ** Merge commit sha: 5d0d0efcb77baf5b9db803a8a8b89450e27aff38 **/ platform/linux-generic/include/odp_packet_io_internal.h | 3 ++- platform/linux-generic/pktio/dpdk.c | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h index f323d5c31..598b1ad50 100644 --- a/platform/linux-generic/include/odp_packet_io_internal.h +++ b/platform/linux-generic/include/odp_packet_io_internal.h @@ -113,7 +113,8 @@ struct pktio_entry { /* These two locks together lock the whole pktio device */ odp_ticketlock_t rxl; /**< RX ticketlock */ odp_ticketlock_t txl; /**< TX ticketlock */ - int cls_enabled; /**< is classifier enabled */ + uint8_t cls_enabled; /**< classifier enabled */ + uint8_t chksum_insert_ena; /**< pktout checksum offload enabled */ odp_pktio_t handle; /**< pktio handle */ union { pkt_loop_t pkt_loop; /**< Using loopback for IO */ diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 430eb8df4..7e493ad86 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -546,6 +546,9 @@ static inline void pkt_set_ol_tx(odp_pktout_config_opt_t *pktout_cfg, odp_bool_t ipv4_chksum_pkt, udp_chksum_pkt, tcp_chksum_pkt; packet_parser_t *pkt_p = &pkt_hdr->p; + if (pkt_p->l3_offset == ODP_PACKET_OFFSET_INVALID) + return; + l3_hdr = (void *)(mbuf_data + pkt_p->l3_offset); if (check_proto(l3_hdr, &l3_proto_v4, &l4_proto)) @@ -633,7 +636,7 @@ static inline int pkt_to_mbuf(pktio_entry_t *pktio_entry, odp_packet_copy_to_mem(pkt_table[i], 0, pkt_len, data); - if (pkt_hdr->p.l3_offset != ODP_PACKET_OFFSET_INVALID) { + if (odp_unlikely(pktio_entry->s.chksum_insert_ena)) { odp_pktout_config_opt_t *pktout_capa = &pktio_entry->s.capa.config.pktout; @@ -748,7 +751,7 @@ static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry, pkt_hdr->extra_type == PKT_EXTRA_TYPE_DPDK)) { mbuf_update(mbuf, pkt_hdr, pkt_len); - if (pkt_hdr->p.l3_offset != ODP_PACKET_OFFSET_INVALID) + if (odp_unlikely(pktio_entry->s.chksum_insert_ena)) pkt_set_ol_tx(pktout_cfg, pktout_capa, pkt_hdr, mbuf, _odp_packet_data(pkt)); } else { @@ -771,8 +774,7 @@ static inline int pkt_to_mbuf_zero(pktio_entry_t *pktio_entry, mbuf_init((struct rte_mempool *) pool_entry->ext_desc, mbuf, pkt_hdr); mbuf_update(mbuf, pkt_hdr, pkt_len); - if (pkt_hdr->p.l3_offset != - ODP_PACKET_OFFSET_INVALID) + if (pktio_entry->s.chksum_insert_ena) pkt_set_ol_tx(pktout_cfg, pktout_capa, pkt_hdr, mbuf, _odp_packet_data(pkt)); @@ -1425,6 +1427,7 @@ static int dpdk_start(pktio_entry_t *pktio_entry) rte_eth_dev_info_get(port_id, &dev_info); dev_info.default_txconf.txq_flags = txq_flags; txconf = &dev_info.default_txconf; + pktio_entry->s.chksum_insert_ena = 1; } ret = rte_eth_tx_queue_setup(port_id, i, DPDK_NM_TX_DESC,