From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by dpdk.org (Postfix) with ESMTP id ECE0E1B31C for ; Sun, 15 Oct 2017 14:55:22 +0200 (CEST) Received: by mail-wm0-f65.google.com with SMTP id u138so28710062wmu.5 for ; Sun, 15 Oct 2017 05:55:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dev-mellanox-co-il.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=WMBPR9x/e+ixwik4NtRo635bGC18Lv3e8Lv5UIpzXlk=; b=Lv6TD9v94W0pmCexcjrmEfk4bR3mVNv8fGiMdxd8z4hsa0UnkPttaJAedVEsx+iQED U5oPqtibxF+Htr7oTs4DMqkHnEkn/DVHniL/DiHdc9JZ45ma8fBA3W+54bLs8iEzo6DM /NPwqklLYKDtawPaWY0J4rSfoc6g/LC+1ED8+TvTODnGvss/tkdgd/TVWixW1tRR2dgX VuZ5MMYZuGsF6esmu4MwFHBWX8NA/K9EcC7I0B2LYqIlsiDM9LXMF1b+i21939MZq+ot Cjs0aNSU0NC6NvThPfVg4vQP66gFSpdfdGCukd4JLZkN1P6XYrA0MbvDUGYkD2hixybK gVBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=WMBPR9x/e+ixwik4NtRo635bGC18Lv3e8Lv5UIpzXlk=; b=MztA1UpNTB9vbZTicLSnbYsxZ5FW+Iz8IsoRBno2ts347fLW7pxAByaH1a2P9k0Dyq MYhF3Q4aX0+6RJrEMnVh7Ti2X4dyKXDwIE+tfQNOEF7jSbL1QzYD0x8fPiVoFmrYfBji 3R1cTaDgsJnLWK7RLcAKyGmk6LymPHq2zUDmoLJx0Gqpo7WKMu/wadTkpe3vlWhjoeCk 2PUyFCLZwOdcFO9h3y/OseJBhZ4ze7ONtjifD92x8Xf8/Z50eMo/SvIeWz5w7OA/H75N rQeQjTfSqEJ/TupEQygBn9H+QBhxWspBTynjrD42RbwNQaUbwI5Aj6UT+PyUtQsc1Adi TJQA== X-Gm-Message-State: AMCzsaXa51sTcX1h1oA6h6tIZTyh/7bdwT2dFmCQFUMAZHWqdf9pkYKH HNJ8+1Prx8yNk/Fq+mlH6Qk4jw== X-Google-Smtp-Source: AOwi7QABOKVRVqGgFKAVehAmV9hT7g/WS44g2+jkqicd7mLjpKIGCfPptYrI1j4H6/whhBudGuVqAg== X-Received: by 10.80.170.141 with SMTP id q13mr9159764edc.134.1508072122617; Sun, 15 Oct 2017 05:55:22 -0700 (PDT) Received: from [10.0.38.219] ([193.47.165.251]) by smtp.gmail.com with ESMTPSA id j39sm4116156ede.10.2017.10.15.05.55.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Oct 2017 05:55:21 -0700 (PDT) To: dev@dpdk.org, sergio.gonzalez.monroy@intel.com, pablo.de.lara.guarch@intel.com, aviadye@mellanox.com Cc: borisp@mellanox.com, akhil.goyal@nxp.com, hemant.agrawal@nxp.com, radu.nicolau@intel.com, declan.doherty@intel.com, liranl@mellanox.com, nelio.laranjeiro@6wind.com, thomas@monjalon.net References: <1507987683-12315-1-git-send-email-aviadye@dev.mellanox.co.il> <1507987683-12315-6-git-send-email-aviadye@dev.mellanox.co.il> From: Aviad Yehezkel Message-ID: <7fc2533e-3f89-6f41-d0fd-887d9fa7a729@dev.mellanox.co.il> Date: Sun, 15 Oct 2017 15:55:19 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <1507987683-12315-6-git-send-email-aviadye@dev.mellanox.co.il> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Subject: Re: [dpdk-dev] [PATCH 06/11] examples/ipsec-secgw: Added correct padding to tunnel mode X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 Oct 2017 12:55:23 -0000 On 10/14/2017 4:27 PM, aviadye@dev.mellanox.co.il wrote: > From: Aviad Yehezkel > > Signed-off-by: Aviad Yehezkel > --- > examples/ipsec-secgw/esp.c | 51 ++++++++++++++++++++++++++-------------------- > 1 file changed, 29 insertions(+), 22 deletions(-) > > diff --git a/examples/ipsec-secgw/esp.c b/examples/ipsec-secgw/esp.c > index 56ad7a0..689e917 100644 > --- a/examples/ipsec-secgw/esp.c > +++ b/examples/ipsec-secgw/esp.c > @@ -229,25 +229,26 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, > uint8_t *padding, *new_ip, nlp; > struct rte_crypto_sym_op *sym_cop; > int32_t i; > - uint16_t pad_payload_len, pad_len, ip_hdr_len; > + uint16_t pad_payload_len, pad_len = 0; > + uint16_t inner_ip_hdr_len = 0, ip_hdr_len = 0; > > RTE_ASSERT(m != NULL); > RTE_ASSERT(sa != NULL); > + RTE_ASSERT(sa->flags == IP4_TUNNEL || sa->flags == IP6_TUNNEL || > + sa->flags == TRANSPORT); > RTE_ASSERT(cop != NULL); > > - ip_hdr_len = 0; > - > ip4 = rte_pktmbuf_mtod(m, struct ip *); > if (likely(ip4->ip_v == IPVERSION)) { > - if (unlikely(sa->flags == TRANSPORT)) { > - ip_hdr_len = ip4->ip_hl * 4; > + ip_hdr_len = ip4->ip_hl * 4; > + if (unlikely(sa->flags == TRANSPORT)) > nlp = ip4->ip_p; > - } else > + else > nlp = IPPROTO_IPIP; > } else if (ip4->ip_v == IP6_VERSION) { > + /* XXX No option headers supported */ > + ip_hdr_len = sizeof(struct ip6_hdr); > if (unlikely(sa->flags == TRANSPORT)) { > - /* XXX No option headers supported */ > - ip_hdr_len = sizeof(struct ip6_hdr); > ip6 = (struct ip6_hdr *)ip4; > nlp = ip6->ip6_nxt; > } else > @@ -259,22 +260,28 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa, > } > > /* Padded payload length */ > - pad_payload_len = RTE_ALIGN_CEIL(rte_pktmbuf_pkt_len(m) - > - ip_hdr_len + 2, sa->block_size); > - pad_len = pad_payload_len + ip_hdr_len - rte_pktmbuf_pkt_len(m); > - > - RTE_ASSERT(sa->flags == IP4_TUNNEL || sa->flags == IP6_TUNNEL || > - sa->flags == TRANSPORT); > - > - if (likely(sa->flags == IP4_TUNNEL)) > + if (unlikely(sa->flags == TRANSPORT)) { > + pad_payload_len = RTE_ALIGN_CEIL(rte_pktmbuf_pkt_len(m) + > + sizeof(nlp) + 1 - ip_hdr_len, > + sa->block_size); > + pad_len = pad_payload_len + ip_hdr_len - rte_pktmbuf_pkt_len(m); > + } else { > + inner_ip_hdr_len = ip_hdr_len; > ip_hdr_len = sizeof(struct ip); > - else if (sa->flags == IP6_TUNNEL) > - ip_hdr_len = sizeof(struct ip6_hdr); > - else if (sa->flags != TRANSPORT) { > - RTE_LOG(ERR, IPSEC_ESP, "Unsupported SA flags: 0x%x\n", > - sa->flags); > - return -EINVAL; > + if (sa->flags == IP6_TUNNEL) > + ip_hdr_len = sizeof(struct ip6_hdr); > + > + pad_payload_len = RTE_ALIGN_CEIL(rte_pktmbuf_pkt_len(m) + > + sizeof(nlp) + 1, > + sa->block_size); > + pad_len = pad_payload_len - rte_pktmbuf_pkt_len(m); > } > + RTE_LOG(DEBUG, IPSEC_ESP, "rte_pktmbuf_pkt_len=%u " > + "inner_ip_hdr_len=%u ip_hdr_len=%u " > + "pad_payload_len=%u pad_len=%u\n", > + rte_pktmbuf_pkt_len(m), > + inner_ip_hdr_len, ip_hdr_len, > + pad_payload_len, pad_len); > > /* Check maximum packet size */ > if (unlikely(ip_hdr_len + sizeof(struct esp_hdr) + sa->iv_len + Tested-by: Aviad Yehezkel