| Message ID | 20241001081728.301272-1-rjarry@redhat.com (mailing list archive) |
|---|---|
| Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 192B545A78; Tue, 1 Oct 2024 10:18:12 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6E51840A6C; Tue, 1 Oct 2024 10:17:58 +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 D48344060F for <dev@dpdk.org>; Tue, 1 Oct 2024 10:17:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1727770675; 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; bh=MozU+nDsq6oJxmyqwoPC6TL8BMDxnTxSJhPpzMCFVr0=; b=Cb2XvTMxyN+exk5M8pGWAE4+Wvsf7K8Y52ZHNRpd0bramsOmOfhSDPh/2HaF5pMeynnkVv QrD9fxBWjdSo9qIBb8ETW+thpiEaIOIHaThvJCA9yae4fSJeWPZ+ZIBJD+mzFxJAaeSZZN l6PSdnjQuVERDJ8ibjnC2o0aYd2diLM= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-510-n12ZOnf8NaCKKLJZAoc5ww-1; Tue, 01 Oct 2024 04:17:42 -0400 X-MC-Unique: n12ZOnf8NaCKKLJZAoc5ww-1 Received: from mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (unknown [10.30.177.15]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 032E518E68D5; Tue, 1 Oct 2024 08:17:40 +0000 (UTC) Received: from ringo.redhat.com (unknown [10.39.208.33]) by mx-prod-int-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4C3C1191BD1D; Tue, 1 Oct 2024 08:17:32 +0000 (UTC) From: Robin Jarry <rjarry@redhat.com> To: dev@dpdk.org Cc: =?utf-8?q?Morten_Br=C3=B8rup?= <mb@smartsharesystems.com>, Stephen Hemminger <stephen@networkplumber.org>, Vladimir Medvedkin <vladimir.medvedkin@intel.com>, Konstantin Ananyev <konstantin.ananyev@huawei.com>, Bruce Richardson <bruce.richardson@intel.com> Subject: [PATCH dpdk v2 00/16] IPv6 APIs overhaul Date: Tue, 1 Oct 2024 10:17:12 +0200 Message-ID: <20241001081728.301272-1-rjarry@redhat.com> In-Reply-To: <20240821162516.610624-17-rjarry@redhat.com> References: <20240821162516.610624-17-rjarry@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org |
| Series |
IPv6 APIs overhaul
|
|
Message
Robin Jarry
Oct. 1, 2024, 8:17 a.m. UTC
Hi everyone, As discussed recently [1], here is a first draft of the IPv6 APIs rework. The API change was announced before the 24.07 release [2]. This series is intended for 24.11. [1] http://inbox.dpdk.org/dev/D2SR8T1H39CJ.JRQFI6JEH0OX@redhat.com/ [2] https://git.dpdk.org/dpdk/commit/?id=835d4c41e0ab58a115c2170c886ba6d3cc1b5764 I tried to keep the patches as small as possible; unfortunately some of them are quite big and cannot be broken down if we want to preserve a bisectable tree. Let me know what you think. Thanks! Cc: Morten Brørup <mb@smartsharesystems.com> Cc: Stephen Hemminger <stephen@networkplumber.org> Cc: Vladimir Medvedkin <vladimir.medvedkin@intel.com> Cc: Konstantin Ananyev <konstantin.ananyev@huawei.com> Cc: Bruce Richardson <bruce.richardson@intel.com> Changelog: v2: - added RTE_IPV6_ADDR helper macro - added more multicast address utils - updated 24.11 changelog - added ipv6 header version check function Robin Jarry (16): net: split raw checksum functions in separate header net: split ipv6 symbols in separate header net: add structure for ipv6 addresses net: use ipv6 structure for header addresses fib6,rib6,lpm6: use ipv6 addr struct net: add ipv6 address utilities fib6,rib6,lpm6: use ipv6 utils graph,node: use ipv6 addr struct and utils pipeline: use ipv6 addr struct ipsec: use ipv6 addr struct thash: use ipv6 addr struct gro: use ipv6 addr struct rte_flow: use ipv6 addr struct rib6,fib6,lpm6: remove duplicate constants net: add utilities for well known ipv6 address types ipv6: add function to check ipv6 version MAINTAINERS | 1 + app/graph/ethdev.c | 40 +- app/graph/ethdev.h | 9 +- app/graph/ip6_route.c | 47 +- app/graph/meson.build | 2 +- app/graph/neigh.c | 22 +- app/graph/neigh_priv.h | 4 +- app/graph/route.h | 8 +- app/test-fib/main.c | 51 +- app/test-flow-perf/actions_gen.c | 4 +- app/test-flow-perf/items_gen.c | 4 +- app/test-pipeline/pipeline_hash.c | 4 +- app/test-pipeline/pipeline_lpm_ipv6.c | 10 +- app/test-sad/main.c | 24 +- app/test/meson.build | 1 + app/test/packet_burst_generator.c | 5 +- app/test/test_cryptodev_security_ipsec.c | 1 + app/test/test_fib6.c | 93 +- app/test/test_fib6_perf.c | 8 +- app/test/test_ipfrag.c | 4 +- app/test/test_ipsec_sad.c | 44 +- app/test/test_lpm6.c | 523 ++--- app/test/test_lpm6_data.h | 2025 ++++++++++--------- app/test/test_lpm6_perf.c | 10 +- app/test/test_net_ipv6.c | 219 ++ app/test/test_reassembly_perf.c | 20 +- app/test/test_rib6.c | 65 +- app/test/test_table_combined.c | 2 +- app/test/test_table_tables.c | 8 +- app/test/test_thash.c | 46 +- doc/guides/rel_notes/deprecation.rst | 42 - doc/guides/rel_notes/release_24_11.rst | 17 + drivers/common/cnxk/cnxk_security.c | 1 + drivers/crypto/cnxk/cn9k_cryptodev_ops.c | 1 + drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 1 + drivers/net/bnxt/bnxt_flow.c | 12 +- drivers/net/bonding/rte_eth_bond_pmd.c | 4 +- drivers/net/cxgbe/cxgbe_flow.c | 18 +- drivers/net/dpaa2/dpaa2_flow.c | 22 +- drivers/net/hinic/hinic_pmd_flow.c | 6 +- drivers/net/hinic/hinic_pmd_tx.c | 2 +- drivers/net/hns3/hns3_flow.c | 8 +- drivers/net/i40e/i40e_flow.c | 12 +- drivers/net/iavf/iavf_fdir.c | 8 +- drivers/net/iavf/iavf_fsub.c | 8 +- drivers/net/iavf/iavf_ipsec_crypto.c | 6 +- drivers/net/ice/ice_fdir_filter.c | 12 +- drivers/net/ice/ice_switch_filter.c | 16 +- drivers/net/igc/igc_flow.c | 4 +- drivers/net/ixgbe/ixgbe_flow.c | 12 +- drivers/net/ixgbe/ixgbe_ipsec.c | 4 +- drivers/net/mlx5/hws/mlx5dr_definer.c | 36 +- drivers/net/mlx5/mlx5_flow.c | 6 +- drivers/net/mlx5/mlx5_flow_dv.c | 16 +- drivers/net/mlx5/mlx5_flow_hw.c | 10 +- drivers/net/mlx5/mlx5_flow_verbs.c | 8 +- drivers/net/nfp/flower/nfp_flower_flow.c | 36 +- drivers/net/nfp/nfp_net_flow.c | 44 +- drivers/net/qede/qede_filter.c | 4 +- drivers/net/sfc/sfc_flow.c | 28 +- drivers/net/tap/tap_flow.c | 8 +- drivers/net/txgbe/txgbe_flow.c | 12 +- drivers/net/txgbe/txgbe_ipsec.c | 4 +- examples/ip_fragmentation/main.c | 24 +- examples/ip_pipeline/cli.c | 12 +- examples/ip_pipeline/pipeline.c | 17 +- examples/ip_pipeline/thread.c | 2 +- examples/ip_reassembly/main.c | 24 +- examples/ipsec-secgw/flow.c | 12 +- examples/ipsec-secgw/ipsec.c | 8 +- examples/ipsec-secgw/ipsec_lpm_neon.h | 7 +- examples/ipsec-secgw/ipsec_worker.c | 6 +- examples/ipsec-secgw/ipsec_worker.h | 4 +- examples/ipsec-secgw/rt.c | 22 +- examples/ipsec-secgw/sa.c | 4 +- examples/ipsec-secgw/sad.h | 12 +- examples/l3fwd-graph/main.c | 30 +- examples/l3fwd/l3fwd_fib.c | 39 +- examples/l3fwd/l3fwd_lpm.c | 8 +- examples/l3fwd/l3fwd_route.h | 7 +- examples/l3fwd/lpm_route_parse.c | 6 +- lib/ethdev/rte_flow.h | 23 +- lib/fib/meson.build | 4 +- lib/fib/rte_fib6.c | 19 +- lib/fib/rte_fib6.h | 15 +- lib/fib/trie.c | 117 +- lib/fib/trie.h | 18 +- lib/fib/trie_avx512.c | 38 +- lib/fib/trie_avx512.h | 10 +- lib/gro/gro_tcp6.c | 8 +- lib/gro/gro_tcp6.h | 6 +- lib/hash/rte_thash.h | 29 +- lib/ip_frag/rte_ip_frag.h | 1 + lib/ip_frag/rte_ipv6_reassembly.c | 4 +- lib/ipsec/iph.h | 1 + lib/ipsec/rte_ipsec_sad.h | 7 +- lib/lpm/meson.build | 1 + lib/lpm/rte_lpm6.c | 147 +- lib/lpm/rte_lpm6.h | 17 +- lib/net/meson.build | 2 + lib/net/rte_cksum.h | 180 ++ lib/net/rte_ip.h | 467 +---- lib/net/rte_ip6.h | 654 ++++++ lib/net/rte_net.c | 1 + lib/net/rte_net.h | 1 + lib/node/ip6_lookup.c | 21 +- lib/node/rte_node_ip6_api.h | 3 +- lib/pipeline/rte_swx_ipsec.c | 7 +- lib/pipeline/rte_table_action.c | 45 +- lib/pipeline/rte_table_action.h | 7 +- lib/rib/meson.build | 2 +- lib/rib/rte_rib6.c | 112 +- lib/rib/rte_rib6.h | 27 +- lib/table/rte_table_lpm_ipv6.c | 12 +- lib/table/rte_table_lpm_ipv6.h | 4 +- lib/vhost/virtio_net.c | 1 + 116 files changed, 3246 insertions(+), 2741 deletions(-) create mode 100644 app/test/test_net_ipv6.c create mode 100644 lib/net/rte_cksum.h create mode 100644 lib/net/rte_ip6.h
Comments
> From: Robin Jarry [mailto:rjarry@redhat.com] > Sent: Tuesday, 1 October 2024 10.17 > > Hi everyone, > > As discussed recently [1], here is a first draft of the IPv6 APIs > rework. The > API change was announced before the 24.07 release [2]. This series is > intended > for 24.11. > > [1] http://inbox.dpdk.org/dev/D2SR8T1H39CJ.JRQFI6JEH0OX@redhat.com/ > [2] > https://git.dpdk.org/dpdk/commit/?id=835d4c41e0ab58a115c2170c886ba6d3cc > 1b5764 > > I tried to keep the patches as small as possible; unfortunately some of > them > are quite big and cannot be broken down if we want to preserve a > bisectable > tree. > > Let me know what you think. > > Thanks! Sorry about the late review. And thank you for this series! In addition to my patch specific comments, here's some general feedback for the series. Mixing ip6 and ipv6, and IP6 and IPV6 makes it hard to guess names. Please use ipv6 and IPV6 everywhere, also in file names. On the other hand... If file names use "6" postfix to indicate IP Version 6, e.g. rte_fib6.h, rte_ip6.h, then stick with that; just make sure it is consistent. My point is: Where possible, please be consistent in naming. NB: For API/ABI compatibility, don't clean up existing names for consistency. I recall seeing some other patch replacing hardcoded IPv6 addresses given as zero-terminated strings (which are, in fact, 17 byte in size) with arrays containing 16 hex integers, to fix some modern compiler warning about mixed sizes. If adding new hardcoded IPv6 addresses, please use { 0x12, 0x34, 0x56, ...} instead of "\x12\x34\x56...". -Morten
> > As discussed recently [1], here is a first draft of the IPv6 APIs rework. The > API change was announced before the 24.07 release [2]. This series is intended > for 24.11. > > [1] http://inbox.dpdk.org/dev/D2SR8T1H39CJ.JRQFI6JEH0OX@redhat.com/ > [2] https://git.dpdk.org/dpdk/commit/?id=835d4c41e0ab58a115c2170c886ba6d3cc1b5764 > > I tried to keep the patches as small as possible; unfortunately some of them > are quite big and cannot be broken down if we want to preserve a bisectable > tree. > > Let me know what you think. > > Thanks! > > Cc: Morten Brørup <mb@smartsharesystems.com> > Cc: Stephen Hemminger <stephen@networkplumber.org> > Cc: Vladimir Medvedkin <vladimir.medvedkin@intel.com> > Cc: Konstantin Ananyev <konstantin.ananyev@huawei.com> > Cc: Bruce Richardson <bruce.richardson@intel.com> > > Changelog: > > v2: > > - added RTE_IPV6_ADDR helper macro > - added more multicast address utils > - updated 24.11 changelog > - added ipv6 header version check function > > Series-Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> > -- > 2.46.1 >