Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rdma-core for openSUSE:Factory checked in at 2021-05-20 19:24:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rdma-core (Old) and /work/SRC/openSUSE:Factory/.rdma-core.new.2988 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rdma-core" Thu May 20 19:24:39 2021 rev:45 rq:894019 version:35.0 Changes: -------- --- /work/SRC/openSUSE:Factory/rdma-core/rdma-core.changes 2021-03-02 12:30:33.947586654 +0100 +++ /work/SRC/openSUSE:Factory/.rdma-core.new.2988/rdma-core.changes 2021-05-20 19:24:56.321972431 +0200 @@ -1,0 +2,11 @@ +Tue May 18 09:21:31 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> + +- Update to rdma-core v35.0 + - Bugfixes on all providers + - Many improvements on pyverbs + - Fixes dracut path issues on Tumbleweed +- Refresh patches to latest sources: + - Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch + - disable-rdma-interface-renaming.patch + +------------------------------------------------------------------- Old: ---- rdma-core-33.1.0.2504c0bab0a8.tar.gz New: ---- rdma-core-35.0.0.e29a698e9902.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rdma-core.spec ++++++ --- /var/tmp/diff_new_pack.9uxZrx/_old 2021-05-20 19:24:56.829970348 +0200 +++ /var/tmp/diff_new_pack.9uxZrx/_new 2021-05-20 19:24:56.833970331 +0200 @@ -25,9 +25,9 @@ %define with_pyverbs 0 %endif -%define git_ver .0.2504c0bab0a8 +%define git_ver .0.e29a698e9902 Name: rdma-core -Version: 33.1 +Version: 35.0 Release: 0 Summary: RDMA core userspace libraries and daemons License: BSD-2-Clause OR GPL-2.0-only @@ -464,7 +464,7 @@ cd .. mkdir -p %{buildroot}/%{_sysconfdir}/rdma -%global dracutlibdir %%{_libexecdir}/dracut/ +%global dracutlibdir %%{_prefix}/lib/dracut/ %global sysmodprobedir %%{_sysconfdir}/modprobe.d mkdir -p %{buildroot}%{_udevrulesdir} @@ -473,14 +473,19 @@ mkdir -p %{buildroot}%{_unitdir} # Port type setup for mlx4 dual port cards +install -D -m0644 redhat/rdma.mlx4.sys.modprobe %{buildroot}%{sysmodprobedir}/50-libmlx4.conf install -D -m0644 redhat/rdma.mlx4.conf %{buildroot}/%{_sysconfdir}/rdma/mlx4.conf -sed 's%/usr/libexec%/usr/lib%g' redhat/rdma.mlx4.sys.modprobe > %{buildroot}%{sysmodprobedir}/50-libmlx4.conf chmod 0644 %{buildroot}%{sysmodprobedir}/50-libmlx4.conf install -D -m0755 redhat/rdma.mlx4-setup.sh %{buildroot}%{_libexecdir}/mlx4-setup.sh # Dracut file for IB support during boot install -D -m0644 suse/module-setup.sh %{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh +%if "%{_libexecdir}" != "/usr/libexec" +sed 's-/usr/libexec-%{_libexecdir}-g' -i %{buildroot}%{sysmodprobedir}/50-libmlx4.conf +sed 's-/usr/libexec-%{_libexecdir}-g' -i %{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh +%endif + # ibacm cd build LD_LIBRARY_PATH=./lib bin/ib_acme -D . -O ++++++ Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch ++++++ --- /var/tmp/diff_new_pack.9uxZrx/_old 2021-05-20 19:24:56.853970249 +0200 +++ /var/tmp/diff_new_pack.9uxZrx/_new 2021-05-20 19:24:56.857970233 +0200 @@ -1,4 +1,4 @@ -commit 2f56b7b7737d603c408117b88c60be29019818e4 +commit 87b0208768d75fad7f232552408f981f6f5b53b2 Author: Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> Date: Fri Jan 10 09:07:51 2020 +0100 @@ -7,10 +7,10 @@ This reverts commit 36588f5844af4ef1e5b0d6ad002fa1adf9032653. diff --git CMakeLists.txt CMakeLists.txt -index 5579b5a187c0..66eb0b2fbc4b 100644 +index bee504f9bac3..29b177abb4d3 100644 --- CMakeLists.txt +++ CMakeLists.txt -@@ -648,6 +648,7 @@ add_subdirectory(librdmacm/man) +@@ -665,6 +665,7 @@ add_subdirectory(librdmacm/man) # Providers if (HAVE_COHERENT_DMA) add_subdirectory(providers/bnxt_re) @@ -19,7 +19,7 @@ add_subdirectory(providers/efa) add_subdirectory(providers/efa/man) diff --git MAINTAINERS MAINTAINERS -index 948c3a7fb53f..050113e1f60a 100644 +index c317f980abe8..8bbd57b61113 100644 --- MAINTAINERS +++ MAINTAINERS @@ -51,6 +51,11 @@ M: Devesh Sharma <devesh.sha...@broadcom.com> @@ -35,7 +35,7 @@ M: Steve Wise <sw...@opengridcomputing.com> S: Supported diff --git README.md README.md -index b649c6f2bc0f..b31d448264e5 100644 +index 48113de790cb..61d181756c85 100644 --- README.md +++ README.md @@ -15,6 +15,7 @@ under the providers/ directory. Support for the following Kernel RDMA drivers @@ -46,32 +46,6 @@ - iw_cxgb4.ko - hfi1.ko - hns-roce.ko -diff --git debian/control debian/control -index a423e4f8a4d2..33677170a22a 100644 ---- debian/control -+++ debian/control -@@ -91,6 +91,7 @@ Description: User space provider drivers for libibverbs - This package contains the user space verbs drivers: - . - - bnxt_re: Broadcom NetXtreme-E RoCE HCAs -+ - cxgb3: Chelsio T3 iWARP HCAs - - cxgb4: Chelsio T4 iWARP HCAs - - efa: Amazon Elastic Fabric Adapter - - hfi1verbs: Intel Omni-Path HFI -diff --git debian/copyright debian/copyright -index 3bf582b46e06..5c90b2550cf0 100644 ---- debian/copyright -+++ debian/copyright -@@ -148,7 +148,8 @@ Files: providers/bnxt_re/* - Copyright: 2015-2017, Broadcom Limited and/or its subsidiaries - License: BSD-2-clause or GPL-2 - --Files: providers/cxgb4/* -+Files: providers/cxgb3/* -+ providers/cxgb4/* - Copyright: 2003-2016, Chelsio Communications, Inc. - License: BSD-MIT or GPL-2 - diff --git kernel-boot/rdma-description.rules kernel-boot/rdma-description.rules index 48a7cede9bc8..57bb8f1273cd 100644 --- kernel-boot/rdma-description.rules @@ -97,10 +71,10 @@ ENV{ID_NET_DRIVER}=="hns", RUN{builtin}+="kmod load hns_roce" ENV{ID_NET_DRIVER}=="i40e", RUN{builtin}+="kmod load i40iw" diff --git libibverbs/verbs.h libibverbs/verbs.h -index da782f2ad2f2..a528b49a4fea 100644 +index 7d42095652af..726832e0abe6 100644 --- libibverbs/verbs.h +++ libibverbs/verbs.h -@@ -2190,6 +2190,7 @@ struct ibv_device **ibv_get_device_list(int *num_devices); +@@ -2204,6 +2204,7 @@ struct ibv_device **ibv_get_device_list(int *num_devices); struct verbs_devices_ops; extern const struct verbs_device_ops verbs_provider_bnxt_re; @@ -3090,29 +3064,8 @@ + break; + } +} -diff --git redhat/rdma-core.spec redhat/rdma-core.spec -index 1bdc4872a233..af0a2e69e3ea 100644 ---- redhat/rdma-core.spec -+++ redhat/rdma-core.spec -@@ -147,6 +147,8 @@ Summary: A library and drivers for direct userspace use of RDMA (InfiniBand/iWAR - Requires(post): /sbin/ldconfig - Requires(postun): /sbin/ldconfig - Requires: %{name}%{?_isa} = %{version}-%{release} -+Provides: libcxgb3 = %{version}-%{release} -+Obsoletes: libcxgb3 < %{version}-%{release} - Provides: libcxgb4 = %{version}-%{release} - Obsoletes: libcxgb4 < %{version}-%{release} - Provides: libefa = %{version}-%{release} -@@ -177,6 +179,7 @@ fast path operations. - - Device-specific plug-in ibverbs userspace drivers are included: - -+- libcxgb3: Chelsio T3 iWARP HCA - - libcxgb4: Chelsio T4 iWARP HCA - - libefa: Amazon Elastic Fabric Adapter - - libhfi1: Intel Omni-Path HFI diff --git suse/rdma-core.spec suse/rdma-core.spec -index 63f8699ade18..082515dc11c3 100644 +index e5d0950e332b..ff66281047b6 100644 --- suse/rdma-core.spec +++ suse/rdma-core.spec @@ -182,6 +182,7 @@ RDMA core development libraries and headers. ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9uxZrx/_old 2021-05-20 19:24:56.873970167 +0200 +++ /var/tmp/diff_new_pack.9uxZrx/_new 2021-05-20 19:24:56.877970151 +0200 @@ -8,7 +8,7 @@ <param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> - <param name="revision">2504c0bab0a807455bfd0e7f516c86a07656e934</param> + <param name="revision">e29a698e99028e9a092bb00c03ee4bfa31ae0cf3</param> <param name="extract">suse/rdma-core.spec</param> </service> <service name="recompress" mode="disabled"> ++++++ disable-rdma-interface-renaming.patch ++++++ --- /var/tmp/diff_new_pack.9uxZrx/_old 2021-05-20 19:24:56.901970052 +0200 +++ /var/tmp/diff_new_pack.9uxZrx/_new 2021-05-20 19:24:56.901970052 +0200 @@ -1,6 +1,6 @@ -commit 435ad204d32f9f3b7a72a171e2e6d04a90ba9b6e +commit 1b8594d94f6573e5f359383362ecd97fcbaddc13 Author: Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> -Date: Fri Jan 24 16:01:18 2020 +0100 +Date: Tue May 18 11:18:54 2021 +0200 disable rdma interface renaming @@ -9,12 +9,15 @@ Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> diff --git kernel-boot/rdma-persistent-naming.rules kernel-boot/rdma-persistent-naming.rules -index 9b61e1630d56..274d7c87727e 100644 +index 6f9c53a53bbb..41d86df10a54 100644 --- kernel-boot/rdma-persistent-naming.rules +++ kernel-boot/rdma-persistent-naming.rules -@@ -25,4 +25,4 @@ +@@ -26,7 +26,7 @@ # Device type = RoCE # mlx5_0 -> rocex525400c0fe123455 # -ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK" +#ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK" + + # Example: + # * NAME_FIXED ++++++ prebuilt-pandoc.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/091f999901c848597b6f67a020598177d0a677c6 new/pandoc-prebuilt/091f999901c848597b6f67a020598177d0a677c6 --- old/pandoc-prebuilt/091f999901c848597b6f67a020598177d0a677c6 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/091f999901c848597b6f67a020598177d0a677c6 2021-05-18 11:11:41.943258442 +0200 @@ -0,0 +1,106 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "mlx5dv_devx_umem_reg, mlx5dv_devx_umem_dereg" "3" "" "" "" +.hy +.SH NAME +.PP +mlx5dv_devx_umem_reg - Register a user memory to be used by the devx +interface +.PP +mlx5dv_devx_umem_reg_ex - Register a user memory to be used by the devx +interface +.PP +mlx5dv_devx_umem_dereg - Deregister a devx umem object +.SH SYNOPSIS +.IP +.nf +\f[C] +#include <infiniband/mlx5dv.h> + +struct mlx5dv_devx_umem { + uint32_t umem_id; +}; + +struct mlx5dv_devx_umem * +mlx5dv_devx_umem_reg(struct ibv_context *context, void *addr, size_t size, + uint32_t access) + +struct mlx5dv_devx_umem_in { + void *addr; + size_t size; + uint32_t access; + uint64_t pgsz_bitmap; + uint64_t comp_mask; +}; + +struct mlx5dv_devx_umem * +mlx5dv_devx_umem_reg_ex(struct ibv_context *ctx, struct mlx5dv_devx_umem_in *umem_in); + +int mlx5dv_devx_umem_dereg(struct mlx5dv_devx_umem *dv_devx_umem) +\f[R] +.fi +.SH DESCRIPTION +.PP +Register or deregister a user memory to be used by the devx interface. +.PP +The register verb exposes a UMEM DEVX object for user memory +registration for DMA. +The API to register the user memory gets as input the user address, +length and access flags, and provides to the user as output an object +which holds the UMEM ID returned by the firmware to this registered +memory. +.PP +The user can ask for specific page sizes for the given address and +length, in that case \f[I]mlx5dv_devx_umem_reg_ex()\f[R] should be used. +In case the kernel couldn\[cq]t find a matching page size from the given +\f[I]umem_in->pgsz_bitmap\f[R] bitmap the API will fail. +.PP +The user will use that UMEM ID in device direct commands that use this +memory instead of the physical addresses list, for example upon +\f[I]mlx5dv_devx_obj_create\f[R] to create a QP. +.SH ARGUMENTS +.TP +\f[I]context\f[R] +.IP +.nf +\f[C] +RDMA device context to create the action on. +\f[R] +.fi +.TP +\f[I]addr\f[R] +The memory start address to register. +.TP +\f[I]size\f[R] +.IP +.nf +\f[C] +The size of *addr* buffer. +\f[R] +.fi +.TP +\f[I]access\f[R] +The desired memory protection attributes; it is either 0 or the bitwise +OR of one or more of \f[I]enum ibv_access_flags\f[R]. +.TP +\f[I]umem_in\f[R] +A structure holds the legacy arguments in addition to a +\f[I]pgsz_bitmap\f[R] field which represents the required page sizes. +A \f[I]comp_mask\f[R] field was added for future use, for now must be 0. +.SH RETURN VALUE +.PP +Upon success \f[I]mlx5dv_devx_umem_reg\f[R] / +\f[I]mlx5dv_devx_umem_reg_ex\f[R] will return a new \f[I]struct +mlx5dv_devx_umem\f[R] object, on error NULL will be returned and errno +will be set. +.PP +\f[I]mlx5dv_devx_umem_dereg\f[R] returns 0 on success, or the value of +errno on failure (which indicates the failure reason). +.SH SEE ALSO +.PP +\f[I]mlx5dv_open_device(3)\f[R], \f[I]ibv_reg_mr(3)\f[R], +\f[I]mlx5dv_devx_obj_create(3)\f[R] +.PP +#AUTHOR +.PP +Yishai Hadas <yish...@mellanox.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/7abaf14a236746180c88235cd63ca79f34cbe0b6 new/pandoc-prebuilt/7abaf14a236746180c88235cd63ca79f34cbe0b6 --- old/pandoc-prebuilt/7abaf14a236746180c88235cd63ca79f34cbe0b6 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/7abaf14a236746180c88235cd63ca79f34cbe0b6 2021-05-18 11:11:40.595247231 +0200 @@ -0,0 +1,47 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "IBV_IS_FORK_INITIALIZED" "3" "2020-10-09" "libibverbs" "Libibverbs Programmer\[cq]s Manual" +.hy +.SH NAME +.PP +ibv_is_fork_initialized - check if fork support (ibv_fork_init) is +enabled +.SH SYNOPSYS +.IP +.nf +\f[C] +#include <infiniband/verbs.h> + +enum ibv_fork_status { + IBV_FORK_DISABLED, + IBV_FORK_ENABLED, + IBV_FORK_UNNEEDED, +}; + +enum ibv_fork_status ibv_is_fork_initialized(void); +\f[R] +.fi +.SH DESCRIPTION +.PP +\f[B]ibv_is_fork_initialized()\f[R] checks whether libibverbs +\f[B]fork()\f[R] support was enabled through the +\f[B]ibv_fork_init()\f[R] verb. +.SH RETURN VALUE +.PP +\f[B]ibv_is_fork_initialized()\f[R] returns IBV_FORK_DISABLED if fork +support is disabled, or IBV_FORK_ENABLED if enabled. +IBV_FORK_UNNEEDED return value indicates that the kernel copies DMA +pages on fork, hence a call to \f[B]ibv_fork_init()\f[R] is unneeded. +.SH NOTES +.PP +The IBV_FORK_UNNEEDED return value takes precedence over +IBV_FORK_DISABLED and IBV_FORK_ENABLED. +If the kernel supports copy-on-fork for DMA pages then IBV_FORK_UNNEEDED +will be returned regardless of whether \f[B]ibv_fork_init()\f[R] was +called or not. +.SH SEE ALSO +.PP +\f[B]fork\f[R](2), \f[B]ibv_fork_init\f[R](3) +.SH AUTHOR +.PP +Gal Pressman <galpr...@amazon.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/87bcbf2b86c31bd9ac6bf9e31aeb0c2c46f31d9c new/pandoc-prebuilt/87bcbf2b86c31bd9ac6bf9e31aeb0c2c46f31d9c --- old/pandoc-prebuilt/87bcbf2b86c31bd9ac6bf9e31aeb0c2c46f31d9c 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/87bcbf2b86c31bd9ac6bf9e31aeb0c2c46f31d9c 2021-05-18 11:11:40.403245635 +0200 @@ -0,0 +1,52 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "ibv_import_dm ibv_unimport_dm" "3" "2021-1-17" "libibverbs" "Libibverbs Programmer\[cq]s Manual" +.hy +.SH NAME +.PP +ibv_import_dm - import an DM from a given ibv_context +.PP +ibv_unimport_dm - unimport an DM +.SH SYNOPSIS +.IP +.nf +\f[C] +#include <infiniband/verbs.h> + +struct ibv_dm *ibv_import_dm(struct ibv_context *context, uint32_t dm_handle); +void ibv_unimport_dm(struct ibv_dm *dm) +\f[R] +.fi +.SH DESCRIPTION +.PP +\f[B]ibv_import_dm()\f[R] returns a Device memory (DM) that is +associated with the given \f[I]dm_handle\f[R] in the RDMA context. +.PP +The input \f[I]dm_handle\f[R] value must be a valid kernel handle for an +DM object in the assosicated RDMA context. +It can be achieved from the original DM by getting its ibv_dm->handle +member value. +.PP +\f[B]ibv_unimport_dm()\f[R] un import the DM. +Once the DM usage has been ended ibv_free_dm() or ibv_unimport_dm() +should be called. +The first one will go to the kernel to destroy the object once the +second one way cleanup what ever is needed/opposite of the import +without calling the kernel. +.PP +This is the responsibility of the application to coordinate between all +ibv_context(s) that use this DM. +Once destroy is done no other process can touch the object except for +unimport. +All users of the context must collaborate to ensure this. +.SH RETURN VALUE +.PP +\f[B]ibv_import_dm()\f[R] returns a pointer to the allocated DM, or NULL +if the request fails and errno is set. +.SH NOTES +.SH SEE ALSO +.PP +\f[B]ibv_alloc_dm\f[R](3), \f[B]ibv_free_dm\f[R](3), +.SH AUTHOR +.PP +Maor Gottlieb <ma...@nvidia.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/9545514128a54548edeca0639aa2091db0ab6424 new/pandoc-prebuilt/9545514128a54548edeca0639aa2091db0ab6424 --- old/pandoc-prebuilt/9545514128a54548edeca0639aa2091db0ab6424 2021-02-19 08:45:38.350176537 +0100 +++ new/pandoc-prebuilt/9545514128a54548edeca0639aa2091db0ab6424 1970-01-01 01:00:00.000000000 +0100 @@ -1,447 +0,0 @@ -.\" Automatically generated by Pandoc 2.9.2.1 -.\" -.TH "MLX5DV_DR API" "3" "2019-03-28" "mlx5" "mlx5 Programmer\[cq]s Manual" -.hy -.SH NAME -.PP -mlx5dv_dr_domain_create, mlx5dv_dr_domain_sync, -mlx5dv_dr_domain_destroy, mlx5dv_dr_domain_set_reclaim_device_memory - -Manage flow domains -.PP -mlx5dv_dr_table_create, mlx5dv_dr_table_destroy - Manage flow tables -.PP -mlx5dv_dr_matcher_create, mlx5dv_dr_matcher_destroy - Manage flow -matchers -.PP -mlx5dv_dr_rule_create, mlx5dv_dr_rule_destroy - Manage flow rules -.PP -mlx5dv_dr_action_create_drop - Create drop action -.PP -mlx5dv_dr_action_create_default_miss - Create default miss action -.PP -mlx5dv_dr_action_create_tag - Create tag actions -.PP -mlx5dv_dr_action_create_dest_ibv_qp, mlx5dv_dr_action_create_dest_table, -mlx5dv_dr_action_create_dest_vport, -mlx5dv_dr_action_create_dest_devx_tir - Create packet destination -actions -.PP -mlx5dv_dr_action_create_dest_array - Create destination array action -.PP -mlx5dv_dr_action_create_packet_reformat - Create packet reformat actions -.PP -mlx5dv_dr_action_create_modify_header - Create modify header actions -.PP -mlx5dv_dr_action_create_flow_counter - Create devx flow counter actions -.PP -mlx5dv_dr_action_create_aso, mlx5dv_dr_action_modify_aso - Create and -modify ASO actions -.PP -mlx5dv_dr_action_create_flow_meter, mlx5dv_dr_action_modify_flow_meter - -Create and modify meter action -.PP -mlx5dv_dr_action_create_flow_sampler - Create flow sampler action -.PP -mlx5dv_dr_action_create_pop_vlan - Create pop vlan action -.PP -mlx5dv_dr_action_create_push_vlan- Create push vlan action -.PP -mlx5dv_dr_action_destroy - Destroy actions -.SH SYNOPSIS -.IP -.nf -\f[C] -#include <infiniband/mlx5dv.h> - -struct mlx5dv_dr_domain *mlx5dv_dr_domain_create( - struct ibv_context *ctx, - enum mlx5dv_dr_domain_type type); - -int mlx5dv_dr_domain_sync( - struct mlx5dv_dr_domain *domain, - uint32_t flags); - -int mlx5dv_dr_domain_destroy(struct mlx5dv_dr_domain *domain); - -void mlx5dv_dr_domain_set_reclaim_device_memory( - struct mlx5dv_dr_domain *dmn, - bool enable); - -struct mlx5dv_dr_table *mlx5dv_dr_table_create( - struct mlx5dv_dr_domain *domain, - uint32_t level); - -int mlx5dv_dr_table_destroy(struct mlx5dv_dr_table *table); - -struct mlx5dv_dr_matcher *mlx5dv_dr_matcher_create( - struct mlx5dv_dr_table *table, - uint16_t priority, - uint8_t match_criteria_enable, - struct mlx5dv_flow_match_parameters *mask); - -int mlx5dv_dr_matcher_destroy(struct mlx5dv_dr_matcher *matcher); - -struct mlx5dv_dr_rule *mlx5dv_dr_rule_create( - struct mlx5dv_dr_matcher *matcher, - struct mlx5dv_flow_match_parameters *value, - size_t num_actions, - struct mlx5dv_dr_action *actions[]); - -void mlx5dv_dr_rule_destroy(struct mlx5dv_dr_rule *rule); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_drop(void); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_default_miss(void); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_tag( - uint32_t tag_value); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_ibv_qp( - struct ibv_qp *ibqp); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_table( - struct mlx5dv_dr_table *table); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_vport( - struct mlx5dv_dr_domain *domain, - uint32_t vport); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_devx_tir( - struct mlx5dv_devx_obj *devx_obj); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_packet_reformat( - struct mlx5dv_dr_domain *domain, - uint32_t flags, - enum mlx5dv_flow_action_packet_reformat_type reformat_type, - size_t data_sz, void *data); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_modify_header( - struct mlx5dv_dr_domain *domain, - uint32_t flags, - size_t actions_sz, - __be64 actions[]); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_flow_counter( - struct mlx5dv_devx_obj *devx_obj, - uint32_t offset); - -struct mlx5dv_dr_action * -mlx5dv_dr_action_create_aso(struct mlx5dv_dr_domain *domain, - struct mlx5dv_devx_obj *devx_obj, - uint32_t offset, - uint32_t flags, - uint8_t return_reg_c); - -int mlx5dv_dr_action_modify_aso(struct mlx5dv_dr_action *action, - uint32_t offset, - uint32_t flags, - uint8_t return_reg_c); - -struct mlx5dv_dr_action * -mlx5dv_dr_action_create_flow_meter(struct mlx5dv_dr_flow_meter_attr *attr); - -int mlx5dv_dr_action_modify_flow_meter(struct mlx5dv_dr_action *action, - struct mlx5dv_dr_flow_meter_attr *attr, - __be64 modify_field_select); - -struct mlx5dv_dr_action * -mlx5dv_dr_action_create_flow_sampler(struct mlx5dv_dr_flow_sampler_attr *attr); - -struct mlx5dv_dr_action * -mlx5dv_dr_action_create_dest_array(struct mlx5dv_dr_domain *domain, - size_t num_dest, - struct mlx5dv_dr_action_dest_attr *dests[]); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_pop_vlan(void); - -struct mlx5dv_dr_action *mlx5dv_dr_action_create_push_vlan( - struct mlx5dv_dr_domain *dmn, - __be32 vlan_hdr) - -int mlx5dv_dr_action_destroy(struct mlx5dv_dr_action *action); -\f[R] -.fi -.SH DESCRIPTION -.PP -The Direct Rule API (mlx5dv_dr_*) allows complete access by verbs -application to the device\[ga]s packet steering functionality. -.PP -Steering flow rules are the combination of attributes with a match -pattern and a list of actions. -Rules can have several distinct actions (such as counting, -encapsulating, decapsulating before redirecting packets to a particular -queue or port, etc.). -In order to manage the rule execution order for the packet processing -matching by HW, multiple flow tables in an ordered chain and multiple -flow matchers sorted by priorities are defined. -.SS Domain -.PP -\f[I]mlx5dv_dr_domain_create()\f[R] creates a DR domain object to be -used with \f[I]mlx5dv_dr_table_create()\f[R] and -\f[I]mlx5dv_dr_action_create_*()\f[R]. -.PP -A domain should be destroyed by calling -\f[I]mlx5dv_dr_domain_destroy()\f[R] once all depended resources are -released. -.PP -The device support the following domains types: -.PP -\f[B]MLX5DV_DR_DOMAIN_TYPE_NIC_RX\f[R] Manage ethernet packets received -on the NIC. -Packets in this domain can be dropped, dispatched to QP\[ga]s, modified -or redirected to additional tables inside the domain. -Default behavior: Drop packet. -.PP -\f[B]MLX5DV_DR_DOMAIN_TYPE_NIC_TX\f[R] Manage ethernet packets transmit -on the NIC. -Packets in this domain can be dropped, modified or redirected to -additional tables inside the domain. -Default behavior: Forward packet to NIC vport (to eSwitch or wire). -.PP -\f[B]MLX5DV_DR_DOMAIN_TYPE_FDB\f[R] Manage ethernet packets in the -eSwitch Forwarding Data Base for packets received from wire or from any -other vport. -Packets in this domain can be dropped, dispatched to vport, modified or -redirected to additional tables inside the domain. -Default behavior: Forward packet to eSwitch manager vport. -.PP -\f[I]mlx5dv_dr_domain_sync()\f[R] is used in order to flush the rule -submission queue. -By default, rules in a domain are updated in HW asynchronously. -\f[B]flags\f[R] should be a set of type \f[I]enum -mlx5dv_dr_domain_sync_flags\f[R]: -.PP -\f[B]MLX5DV_DR_DOMAIN_SYNC_FLAGS_SW\f[R]: block until completion of all -software queued tasks. -.PP -\f[B]MLX5DV_DR_DOMAIN_SYNC_FLAGS_HW\f[R]: clear the steering HW cache to -enforce next packet hits the latest rules, in addition to the SW SYNC -handling. -.PP -\f[B]MLX5DV_DR_DOMAIN_SYNC_FLAGS_MEM\f[R]: sync device memory to free -cached memory. -.PP -\f[I]mlx5dv_dr_domain_set_reclaim_device_memory()\f[R] is used to enable -the reclaiming of device memory back to the system when not in use, by -default this feature is disabled. -.SS Table -.PP -\f[I]mlx5dv_dr_table_create()\f[R] creates a DR table in the -\f[B]domain\f[R], at the appropriate \f[B]level\f[R], and can be used -with \f[I]mlx5dv_dr_matcher_create()\f[R] and -\f[I]mlx5dv_dr_action_create_dest_table()\f[R]. -All packets start traversing the steering domain tree at table -\f[B]level\f[R] zero (0). -Using rule and action, packets can by redirected to other tables in the -domain. -.PP -A table should be destroyed by calling -\f[I]mlx5dv_dr_table_destroy()\f[R] once all depended resources are -released. -.SS Matcher -.PP -\f[I]mlx5dv_dr_matcher_create()\f[R] create a matcher object in -\f[B]table\f[R], at sorted \f[B]priority\f[R] (lower value is check -first). -A matcher can hold multiple rules, all with identical \f[B]mask\f[R] of -type \f[I]struct mlx5dv_flow_match_parameters\f[R] which represents the -exact attributes to be compared by HW steering. -The \f[B]match_criteria_enable\f[R] and \f[B]mask\f[R] are defined in a -device spec format. -Only the fields that where masked in the \f[I]matcher\f[R] should be -filled by the rule in \f[I]mlx5dv_dr_rule_create()\f[R]. -.PP -A matcher should be destroyed by calling -\f[I]mlx5dv_dr_matcher_destroy()\f[R] once all depended resources are -released. -.SS Actions -.PP -A set of action create API are defined by -\f[I]mlx5dv_dr_action_create_*()\f[R]. -All action are created as \f[I]struct mlx5dv_dr_action\f[R]. -An action should be destroyed by calling -\f[I]mlx5dv_dr_action_destroy()\f[R] once all depended rules are -destroyed. -.PP -When an action handle is reused for multiple rules, the same action will -be executed. -e.g.: action `count' will count multiple flows rules on the same HW flow -counter context. -action `drop' will drop packets of different rule from any matcher. -.PP -Action: Drop \f[I]mlx5dv_dr_action_create_drop\f[R] create a terminating -action which drops packets. -Can not be mixed with Destination actions. -.PP -Action: Default miss \f[I]mlx5dv_dr_action_create_default_miss\f[R] -create a terminating action which will execute the default behavior -based on the domain type. -.PP -Action: Tag \f[I]mlx5dv_dr_action_create_tag\f[R] creates a -non-terminating action which tags packets with \f[B]tag_value\f[R]. -The \f[B]tag_value\f[R] is available in the CQE of the packet received. -Valid only on domain type NIC_RX. -.PP -Action: Destination \f[I]mlx5dv_dr_action_create_dest_ibv_qp\f[R] -creates a terminating action delivering the packet to a QP, defined by -\f[B]ibqp\f[R]. -Valid only on domain type NIC_RX. -\f[I]mlx5dv_dr_action_create_dest_table\f[R] creates a forwarding action -to another flow table, defined by \f[B]table\f[R]. -The destination \f[B]table\f[R] must be from the same domain with a -level higher than zero. -\f[I]mlx5dv_dr_action_create_dest_vport\f[R] creates a forwarding action -to a \f[B]vport\f[R] on the same \f[B]domain\f[R]. -Valid only on domain type FDB. -\f[I]mlx5dv_dr_action_create_dest_devx_tir\f[R] creates a terminating -action delivering the packet to a TIR, defined by \f[B]devx_obj\f[R]. -Valid only on domain type NIC_RX. -.PP -Action: Array \f[I]mlx5dv_dr_action_create_dest_array\f[R] creates an -action which replicates a packet to multiple destinations. -\f[B]num_dest\f[R] defines the number of replication destinations. -Each \f[B]dests\f[R] destination array entry can be of different -\f[B]type\f[R]. -Use type MLX5DV_DR_ACTION_DEST for direct forwarding to an action -destination. -Use type MLX5DV_DR_ACTION_DEST_REFORMAT when reformat action should be -performed on the packet before it is forwarding to the destination -action. -.PP -Action: Packet Reformat -\f[I]mlx5dv_dr_action_create_packet_reformat\f[R] create a packet -reformat context and action in the \f[B]domain\f[R]. -The \f[B]reformat_type\f[R], \f[B]data_sz\f[R] and \f[B]data\f[R] are -defined in \f[I]man mlx5dv_create_flow_action_packet_reformat\f[R]. -.PP -Action: Modify Header \f[I]mlx5dv_dr_action_create_modify_header\f[R] -create a modify header context and action in the \f[B]domain\f[R]. -The \f[B]actions_sz\f[R] and \f[B]actions\f[R] are defined in \f[I]man -mlx5dv_create_flow_action_modify_header\f[R]. -.PP -Action: Flow Count \f[I]mlx5dv_dr_action_create_flow_counter\f[R] -creates a flow counter action from a DEVX flow counter object, based on -\f[B]devx_obj\f[R] and specific counter index from \f[B]offset\f[R] in -the counter bulk. -.PP -Action: ASO \f[I]mlx5dv_dr_action_create_aso\f[R] receives a -\f[B]domain\f[R] pointer and creates an ASO action from the DEVX ASO -object, based on \f[B]devx_obj\f[R]. -Use \f[B]offset\f[R] to select the specific ASO object in the -\f[B]devx_obj\f[R] bulk. -DR rules using this action can optionally update the ASO object value -according to \f[B]flags\f[R] to choose the specific wanted behavior of -this object. -After a packet hits the rule with the ASO object the value of the ASO -object will be copied into the chosen \f[B]return_reg_c\f[R] which can -be used for match in following DR rules. -.PP -\f[I]mlx5dv_dr_action_modify_aso\f[R] modifies ASO action -\f[B]action\f[R] with new values for \f[B]offset\f[R], -\f[B]return_reg_c\f[R] and \f[B]flags\f[R]. -Only new DR rules using this \f[B]action\f[R] will use the modified -values. -Existing DR rules do not change the HW action values stored. -.PP -\f[B]flags\f[R] can be set to one of the types of -\f[I]mlx5dv_dr_action_aso_first_hit_flags\f[R] or -\f[I]mlx5dv_dr_action_aso_flow_meter_flags\f[R]: -\f[B]MLX5DV_DR_ACTION_ASO_FIRST_HIT_FLAGS_SET\f[R]: is used to set the -ASO first hit object context, else the context is only copied to the -return_reg_c. -\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_RED\f[R]: is used to indicate -to update the initial color in ASO flow meter object value to red. -\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_YELLOW\f[R]: is used to -indicate to update the initial color in ASO flow meter object value to -yellow. -\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_GREEN\f[R]: is used to -indicate to update the initial color in ASO flow meter object value to -green. -\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_UNDEFINED\f[R]: is used to -indicate to update the initial color in ASO flow meter object value to -undefined. -.PP -Action: Meter \f[I]mlx5dv_dr_action_create_flow_meter\f[R] creates a -meter action based on the flow meter parameters. -The paramertes are according to the device specification. -\f[I]mlx5dv_dr_action_modify_flow_meter\f[R] modifies existing flow -meter \f[B]action\f[R] based on \f[B]modify_field_select\f[R]. -\f[B]modify_field_select\f[R] is according to the device specification. -.PP -Action: Sampler \f[I]mlx5dv_dr_action_create_flow_sampler\f[R] creates a -sampler action, allowing us to duplicate and sample a portion of -traffic. -Packets steered to the sampler action will be sampled with an -approximate probability of 1/sample_ratio provided in \f[B]attr\f[R], -and sample_actions provided in \f[B]attr\f[R] will be executed over -them. -All original packets will be steered to default_next_table in -\f[B]attr\f[R]. -A modify header format SET_ACTION data can be provided in action of -\f[B]attr\f[R], which can be executed on packets before going to default -flow table. -On some devices, this is required to set register value. -.PP -Action Flags: action \f[B]flags\f[R] can be set to one of the types of -\f[I]enum mlx5dv_dr_action_flags\f[R]: -.PP -Action: Pop Vlan \f[I]mlx5dv_dr_action_create_pop_vlan\f[R] creates a -pop vlan action which removes VLAN tags from packets layer 2. -.PP -Action: Push Vlan \f[I]mlx5dv_dr_action_create_push_vlan\f[R] creates a -push vlan action which adds VLAN tags to packets layer 2. -.PP -\f[B]MLX5DV_DR_ACTION_FLAGS_ROOT_LEVEL\f[R]: is used to indicate the -action is targeted for flow table in level=0 (ROOT) of the specific -domain. -.SS Rule -.PP -\f[I]mlx5dv_dr_rule_create()\f[R] creates a HW steering rule entry in -\f[B]matcher\f[R]. -The \f[B]value\f[R] of type \f[I]struct -mlx5dv_flow_match_parameters\f[R] holds the exact attribute values of -the steering rule to be matched, in a device spec format. -Only the fields that where masked in the \f[I]matcher\f[R] should be -filled. -HW will perform the set of \f[B]num_actions\f[R] from the -\f[B]action\f[R] array of type \f[I]struct mlx5dv_dr_action\f[R], once a -packet matches the exact \f[B]value\f[R] of the rule (referred to as a -`hit'). -.PP -\f[I]mlx5dv_dr_rule_destroy()\f[R] destroys the rule. -.SH RETURN VALUE -.PP -The create API calls will return a pointer to the relevant object: -table, matcher, action, rule. -on failure, NULL will be returned and errno will be set. -.PP -The destroy API calls will returns 0 on success, or the value of errno -on failure (which indicates the failure reason). -.SH LIMITATIONS -.PP -Application can verify is a feature is supported by \f[I]trail and -error\f[R]. -No capabilities are exposed, as the combination of all the options -exposed are way to large to define. -.PP -Tables are size less by definition. -They are expected to grow and shrink to accommodate for all rules, -according to driver capabilities. -Once reaching a limit, an error is returned. -.PP -Matchers in same priority, in the same table, will have undefined -ordered. -.PP -A rule with identical value pattern to another rule on a given matcher -are rejected. -.PP -IP version in matcher mask and rule should be equal and set to 4, 6 or -0. -# SEE ALSO -.PP -\f[B]mlx5dv_open_device(3)\f[R], -\f[B]mlx5dv_create_flow_action_packet_reformat(3)\f[R], -\f[B]mlx5dv_create_flow_action_modify_header(3)\f[R]. -.SH AUTHOR -.PP -Alex Rosenbaum <al...@mellanox.com> Alex Vesker <va...@mellanox.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/affcd328ece4d37125b041690d542c70aee0c8b5 new/pandoc-prebuilt/affcd328ece4d37125b041690d542c70aee0c8b5 --- old/pandoc-prebuilt/affcd328ece4d37125b041690d542c70aee0c8b5 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/affcd328ece4d37125b041690d542c70aee0c8b5 2021-05-18 11:11:41.615255715 +0200 @@ -0,0 +1,452 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "MLX5DV_DR API" "3" "2019-03-28" "mlx5" "mlx5 Programmer\[cq]s Manual" +.hy +.SH NAME +.PP +mlx5dv_dr_domain_create, mlx5dv_dr_domain_sync, +mlx5dv_dr_domain_destroy, mlx5dv_dr_domain_set_reclaim_device_memory - +Manage flow domains +.PP +mlx5dv_dr_table_create, mlx5dv_dr_table_destroy - Manage flow tables +.PP +mlx5dv_dr_matcher_create, mlx5dv_dr_matcher_destroy - Manage flow +matchers +.PP +mlx5dv_dr_rule_create, mlx5dv_dr_rule_destroy - Manage flow rules +.PP +mlx5dv_dr_action_create_drop - Create drop action +.PP +mlx5dv_dr_action_create_default_miss - Create default miss action +.PP +mlx5dv_dr_action_create_tag - Create tag actions +.PP +mlx5dv_dr_action_create_dest_ibv_qp, mlx5dv_dr_action_create_dest_table, +mlx5dv_dr_action_create_dest_vport, +mlx5dv_dr_action_create_dest_devx_tir - Create packet destination +actions +.PP +mlx5dv_dr_action_create_dest_array - Create destination array action +.PP +mlx5dv_dr_action_create_packet_reformat - Create packet reformat actions +.PP +mlx5dv_dr_action_create_modify_header - Create modify header actions +.PP +mlx5dv_dr_action_create_flow_counter - Create devx flow counter actions +.PP +mlx5dv_dr_action_create_aso, mlx5dv_dr_action_modify_aso - Create and +modify ASO actions +.PP +mlx5dv_dr_action_create_flow_meter, mlx5dv_dr_action_modify_flow_meter - +Create and modify meter action +.PP +mlx5dv_dr_action_create_flow_sampler - Create flow sampler action +.PP +mlx5dv_dr_action_create_pop_vlan - Create pop vlan action +.PP +mlx5dv_dr_action_create_push_vlan- Create push vlan action +.PP +mlx5dv_dr_action_destroy - Destroy actions +.SH SYNOPSIS +.IP +.nf +\f[C] +#include <infiniband/mlx5dv.h> + +struct mlx5dv_dr_domain *mlx5dv_dr_domain_create( + struct ibv_context *ctx, + enum mlx5dv_dr_domain_type type); + +int mlx5dv_dr_domain_sync( + struct mlx5dv_dr_domain *domain, + uint32_t flags); + +int mlx5dv_dr_domain_destroy(struct mlx5dv_dr_domain *domain); + +void mlx5dv_dr_domain_set_reclaim_device_memory( + struct mlx5dv_dr_domain *dmn, + bool enable); + +struct mlx5dv_dr_table *mlx5dv_dr_table_create( + struct mlx5dv_dr_domain *domain, + uint32_t level); + +int mlx5dv_dr_table_destroy(struct mlx5dv_dr_table *table); + +struct mlx5dv_dr_matcher *mlx5dv_dr_matcher_create( + struct mlx5dv_dr_table *table, + uint16_t priority, + uint8_t match_criteria_enable, + struct mlx5dv_flow_match_parameters *mask); + +int mlx5dv_dr_matcher_destroy(struct mlx5dv_dr_matcher *matcher); + +struct mlx5dv_dr_rule *mlx5dv_dr_rule_create( + struct mlx5dv_dr_matcher *matcher, + struct mlx5dv_flow_match_parameters *value, + size_t num_actions, + struct mlx5dv_dr_action *actions[]); + +void mlx5dv_dr_rule_destroy(struct mlx5dv_dr_rule *rule); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_drop(void); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_default_miss(void); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_tag( + uint32_t tag_value); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_ibv_qp( + struct ibv_qp *ibqp); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_table( + struct mlx5dv_dr_table *table); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_vport( + struct mlx5dv_dr_domain *domain, + uint32_t vport); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_dest_devx_tir( + struct mlx5dv_devx_obj *devx_obj); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_packet_reformat( + struct mlx5dv_dr_domain *domain, + uint32_t flags, + enum mlx5dv_flow_action_packet_reformat_type reformat_type, + size_t data_sz, void *data); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_modify_header( + struct mlx5dv_dr_domain *domain, + uint32_t flags, + size_t actions_sz, + __be64 actions[]); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_flow_counter( + struct mlx5dv_devx_obj *devx_obj, + uint32_t offset); + +struct mlx5dv_dr_action * +mlx5dv_dr_action_create_aso(struct mlx5dv_dr_domain *domain, + struct mlx5dv_devx_obj *devx_obj, + uint32_t offset, + uint32_t flags, + uint8_t return_reg_c); + +int mlx5dv_dr_action_modify_aso(struct mlx5dv_dr_action *action, + uint32_t offset, + uint32_t flags, + uint8_t return_reg_c); + +struct mlx5dv_dr_action * +mlx5dv_dr_action_create_flow_meter(struct mlx5dv_dr_flow_meter_attr *attr); + +int mlx5dv_dr_action_modify_flow_meter(struct mlx5dv_dr_action *action, + struct mlx5dv_dr_flow_meter_attr *attr, + __be64 modify_field_select); + +struct mlx5dv_dr_action * +mlx5dv_dr_action_create_flow_sampler(struct mlx5dv_dr_flow_sampler_attr *attr); + +struct mlx5dv_dr_action * +mlx5dv_dr_action_create_dest_array(struct mlx5dv_dr_domain *domain, + size_t num_dest, + struct mlx5dv_dr_action_dest_attr *dests[]); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_pop_vlan(void); + +struct mlx5dv_dr_action *mlx5dv_dr_action_create_push_vlan( + struct mlx5dv_dr_domain *dmn, + __be32 vlan_hdr) + +int mlx5dv_dr_action_destroy(struct mlx5dv_dr_action *action); +\f[R] +.fi +.SH DESCRIPTION +.PP +The Direct Rule API (mlx5dv_dr_*) allows complete access by verbs +application to the device\[ga]s packet steering functionality. +.PP +Steering flow rules are the combination of attributes with a match +pattern and a list of actions. +Rules can have several distinct actions (such as counting, +encapsulating, decapsulating before redirecting packets to a particular +queue or port, etc.). +In order to manage the rule execution order for the packet processing +matching by HW, multiple flow tables in an ordered chain and multiple +flow matchers sorted by priorities are defined. +.SS Domain +.PP +\f[I]mlx5dv_dr_domain_create()\f[R] creates a DR domain object to be +used with \f[I]mlx5dv_dr_table_create()\f[R] and +\f[I]mlx5dv_dr_action_create_*()\f[R]. +.PP +A domain should be destroyed by calling +\f[I]mlx5dv_dr_domain_destroy()\f[R] once all depended resources are +released. +.PP +The device support the following domains types: +.PP +\f[B]MLX5DV_DR_DOMAIN_TYPE_NIC_RX\f[R] Manage ethernet packets received +on the NIC. +Packets in this domain can be dropped, dispatched to QP\[ga]s, modified +or redirected to additional tables inside the domain. +Default behavior: Drop packet. +.PP +\f[B]MLX5DV_DR_DOMAIN_TYPE_NIC_TX\f[R] Manage ethernet packets transmit +on the NIC. +Packets in this domain can be dropped, modified or redirected to +additional tables inside the domain. +Default behavior: Forward packet to NIC vport (to eSwitch or wire). +.PP +\f[B]MLX5DV_DR_DOMAIN_TYPE_FDB\f[R] Manage ethernet packets in the +eSwitch Forwarding Data Base for packets received from wire or from any +other vport. +Packets in this domain can be dropped, dispatched to vport, modified or +redirected to additional tables inside the domain. +Default behavior: Forward packet to eSwitch manager vport. +.PP +\f[I]mlx5dv_dr_domain_sync()\f[R] is used in order to flush the rule +submission queue. +By default, rules in a domain are updated in HW asynchronously. +\f[B]flags\f[R] should be a set of type \f[I]enum +mlx5dv_dr_domain_sync_flags\f[R]: +.PP +\f[B]MLX5DV_DR_DOMAIN_SYNC_FLAGS_SW\f[R]: block until completion of all +software queued tasks. +.PP +\f[B]MLX5DV_DR_DOMAIN_SYNC_FLAGS_HW\f[R]: clear the steering HW cache to +enforce next packet hits the latest rules, in addition to the SW SYNC +handling. +.PP +\f[B]MLX5DV_DR_DOMAIN_SYNC_FLAGS_MEM\f[R]: sync device memory to free +cached memory. +.PP +\f[I]mlx5dv_dr_domain_set_reclaim_device_memory()\f[R] is used to enable +the reclaiming of device memory back to the system when not in use, by +default this feature is disabled. +.SS Table +.PP +\f[I]mlx5dv_dr_table_create()\f[R] creates a DR table in the +\f[B]domain\f[R], at the appropriate \f[B]level\f[R], and can be used +with \f[I]mlx5dv_dr_matcher_create()\f[R] and +\f[I]mlx5dv_dr_action_create_dest_table()\f[R]. +All packets start traversing the steering domain tree at table +\f[B]level\f[R] zero (0). +Using rule and action, packets can by redirected to other tables in the +domain. +.PP +A table should be destroyed by calling +\f[I]mlx5dv_dr_table_destroy()\f[R] once all depended resources are +released. +.SS Matcher +.PP +\f[I]mlx5dv_dr_matcher_create()\f[R] create a matcher object in +\f[B]table\f[R], at sorted \f[B]priority\f[R] (lower value is check +first). +A matcher can hold multiple rules, all with identical \f[B]mask\f[R] of +type \f[I]struct mlx5dv_flow_match_parameters\f[R] which represents the +exact attributes to be compared by HW steering. +The \f[B]match_criteria_enable\f[R] and \f[B]mask\f[R] are defined in a +device spec format. +Only the fields that where masked in the \f[I]matcher\f[R] should be +filled by the rule in \f[I]mlx5dv_dr_rule_create()\f[R]. +.PP +A matcher should be destroyed by calling +\f[I]mlx5dv_dr_matcher_destroy()\f[R] once all depended resources are +released. +.SS Actions +.PP +A set of action create API are defined by +\f[I]mlx5dv_dr_action_create_*()\f[R]. +All action are created as \f[I]struct mlx5dv_dr_action\f[R]. +An action should be destroyed by calling +\f[I]mlx5dv_dr_action_destroy()\f[R] once all depended rules are +destroyed. +.PP +When an action handle is reused for multiple rules, the same action will +be executed. +e.g.: action `count' will count multiple flows rules on the same HW flow +counter context. +action `drop' will drop packets of different rule from any matcher. +.PP +Action: Drop \f[I]mlx5dv_dr_action_create_drop\f[R] create a terminating +action which drops packets. +Can not be mixed with Destination actions. +.PP +Action: Default miss \f[I]mlx5dv_dr_action_create_default_miss\f[R] +create a terminating action which will execute the default behavior +based on the domain type. +.PP +Action: Tag \f[I]mlx5dv_dr_action_create_tag\f[R] creates a +non-terminating action which tags packets with \f[B]tag_value\f[R]. +The \f[B]tag_value\f[R] is available in the CQE of the packet received. +Valid only on domain type NIC_RX. +.PP +Action: Destination \f[I]mlx5dv_dr_action_create_dest_ibv_qp\f[R] +creates a terminating action delivering the packet to a QP, defined by +\f[B]ibqp\f[R]. +Valid only on domain type NIC_RX. +\f[I]mlx5dv_dr_action_create_dest_table\f[R] creates a forwarding action +to another flow table, defined by \f[B]table\f[R]. +The destination \f[B]table\f[R] must be from the same domain with a +level higher than zero. +\f[I]mlx5dv_dr_action_create_dest_vport\f[R] creates a forwarding action +to a \f[B]vport\f[R] on the same \f[B]domain\f[R]. +Valid only on domain type FDB. +\f[I]mlx5dv_dr_action_create_dest_devx_tir\f[R] creates a terminating +action delivering the packet to a TIR, defined by \f[B]devx_obj\f[R]. +Valid only on domain type NIC_RX. +.PP +Action: Array \f[I]mlx5dv_dr_action_create_dest_array\f[R] creates an +action which replicates a packet to multiple destinations. +\f[B]num_dest\f[R] defines the number of replication destinations. +Each \f[B]dests\f[R] destination array entry can be of different +\f[B]type\f[R]. +Use type MLX5DV_DR_ACTION_DEST for direct forwarding to an action +destination. +Use type MLX5DV_DR_ACTION_DEST_REFORMAT when reformat action should be +performed on the packet before it is forwarding to the destination +action. +.PP +Action: Packet Reformat +\f[I]mlx5dv_dr_action_create_packet_reformat\f[R] create a packet +reformat context and action in the \f[B]domain\f[R]. +The \f[B]reformat_type\f[R], \f[B]data_sz\f[R] and \f[B]data\f[R] are +defined in \f[I]man mlx5dv_create_flow_action_packet_reformat\f[R]. +.PP +Action: Modify Header \f[I]mlx5dv_dr_action_create_modify_header\f[R] +create a modify header context and action in the \f[B]domain\f[R]. +The \f[B]actions_sz\f[R] and \f[B]actions\f[R] are defined in \f[I]man +mlx5dv_create_flow_action_modify_header\f[R]. +.PP +Action: Flow Count \f[I]mlx5dv_dr_action_create_flow_counter\f[R] +creates a flow counter action from a DEVX flow counter object, based on +\f[B]devx_obj\f[R] and specific counter index from \f[B]offset\f[R] in +the counter bulk. +.PP +Action: ASO \f[I]mlx5dv_dr_action_create_aso\f[R] receives a +\f[B]domain\f[R] pointer and creates an ASO action from the DEVX ASO +object, based on \f[B]devx_obj\f[R]. +Use \f[B]offset\f[R] to select the specific ASO object in the +\f[B]devx_obj\f[R] bulk. +DR rules using this action can optionally update the ASO object value +according to \f[B]flags\f[R] to choose the specific wanted behavior of +this object. +After a packet hits the rule with the ASO object the value of the ASO +object will be copied into the chosen \f[B]return_reg_c\f[R] which can +be used for match in following DR rules. +.PP +\f[I]mlx5dv_dr_action_modify_aso\f[R] modifies ASO action +\f[B]action\f[R] with new values for \f[B]offset\f[R], +\f[B]return_reg_c\f[R] and \f[B]flags\f[R]. +Only new DR rules using this \f[B]action\f[R] will use the modified +values. +Existing DR rules do not change the HW action values stored. +.PP +\f[B]flags\f[R] can be set to one of the types of +\f[I]mlx5dv_dr_action_aso_first_hit_flags\f[R] or +\f[I]mlx5dv_dr_action_aso_flow_meter_flags\f[R] or +\f[I]mlx5dv_dr_action_aso_ct_flags\f[R]: +\f[B]MLX5DV_DR_ACTION_ASO_FIRST_HIT_FLAGS_SET\f[R]: is used to set the +ASO first hit object context, else the context is only copied to the +return_reg_c. +\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_RED\f[R]: is used to indicate +to update the initial color in ASO flow meter object value to red. +\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_YELLOW\f[R]: is used to +indicate to update the initial color in ASO flow meter object value to +yellow. +\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_GREEN\f[R]: is used to +indicate to update the initial color in ASO flow meter object value to +green. +\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_FLOW_METER_UNDEFINED\f[R]: is used to +indicate to update the initial color in ASO flow meter object value to +undefined. +\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_CT_DIRECTION_INITIATOR\f[R]: is used to +indicate the TCP connection direction the SYN packet was sent on. +\f[B]MLX5DV_DR_ACTION_FLAGS_ASO_CT_DIRECTION_RESPONDER\f[R]: is used to +indicate the TCP connection direction the SYN-ACK packet was sent on. +.PP +Action: Meter \f[I]mlx5dv_dr_action_create_flow_meter\f[R] creates a +meter action based on the flow meter parameters. +The paramertes are according to the device specification. +\f[I]mlx5dv_dr_action_modify_flow_meter\f[R] modifies existing flow +meter \f[B]action\f[R] based on \f[B]modify_field_select\f[R]. +\f[B]modify_field_select\f[R] is according to the device specification. +.PP +Action: Sampler \f[I]mlx5dv_dr_action_create_flow_sampler\f[R] creates a +sampler action, allowing us to duplicate and sample a portion of +traffic. +Packets steered to the sampler action will be sampled with an +approximate probability of 1/sample_ratio provided in \f[B]attr\f[R], +and sample_actions provided in \f[B]attr\f[R] will be executed over +them. +All original packets will be steered to default_next_table in +\f[B]attr\f[R]. +A modify header format SET_ACTION data can be provided in action of +\f[B]attr\f[R], which can be executed on packets before going to default +flow table. +On some devices, this is required to set register value. +.PP +Action Flags: action \f[B]flags\f[R] can be set to one of the types of +\f[I]enum mlx5dv_dr_action_flags\f[R]: +.PP +Action: Pop Vlan \f[I]mlx5dv_dr_action_create_pop_vlan\f[R] creates a +pop vlan action which removes VLAN tags from packets layer 2. +.PP +Action: Push Vlan \f[I]mlx5dv_dr_action_create_push_vlan\f[R] creates a +push vlan action which adds VLAN tags to packets layer 2. +.PP +\f[B]MLX5DV_DR_ACTION_FLAGS_ROOT_LEVEL\f[R]: is used to indicate the +action is targeted for flow table in level=0 (ROOT) of the specific +domain. +.SS Rule +.PP +\f[I]mlx5dv_dr_rule_create()\f[R] creates a HW steering rule entry in +\f[B]matcher\f[R]. +The \f[B]value\f[R] of type \f[I]struct +mlx5dv_flow_match_parameters\f[R] holds the exact attribute values of +the steering rule to be matched, in a device spec format. +Only the fields that where masked in the \f[I]matcher\f[R] should be +filled. +HW will perform the set of \f[B]num_actions\f[R] from the +\f[B]action\f[R] array of type \f[I]struct mlx5dv_dr_action\f[R], once a +packet matches the exact \f[B]value\f[R] of the rule (referred to as a +`hit'). +.PP +\f[I]mlx5dv_dr_rule_destroy()\f[R] destroys the rule. +.SH RETURN VALUE +.PP +The create API calls will return a pointer to the relevant object: +table, matcher, action, rule. +on failure, NULL will be returned and errno will be set. +.PP +The destroy API calls will returns 0 on success, or the value of errno +on failure (which indicates the failure reason). +.SH LIMITATIONS +.PP +Application can verify is a feature is supported by \f[I]trail and +error\f[R]. +No capabilities are exposed, as the combination of all the options +exposed are way to large to define. +.PP +Tables are size less by definition. +They are expected to grow and shrink to accommodate for all rules, +according to driver capabilities. +Once reaching a limit, an error is returned. +.PP +Matchers in same priority, in the same table, will have undefined +ordered. +.PP +A rule with identical value pattern to another rule on a given matcher +are rejected. +.PP +IP version in matcher mask and rule should be equal and set to 4, 6 or +0. +# SEE ALSO +.PP +\f[B]mlx5dv_open_device(3)\f[R], +\f[B]mlx5dv_create_flow_action_packet_reformat(3)\f[R], +\f[B]mlx5dv_create_flow_action_modify_header(3)\f[R]. +.SH AUTHOR +.PP +Alex Rosenbaum <al...@mellanox.com> Alex Vesker <va...@mellanox.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/d3b0093ed7a124b560e5c23c4b6adc7732f49e30 new/pandoc-prebuilt/d3b0093ed7a124b560e5c23c4b6adc7732f49e30 --- old/pandoc-prebuilt/d3b0093ed7a124b560e5c23c4b6adc7732f49e30 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/d3b0093ed7a124b560e5c23c4b6adc7732f49e30 2021-05-18 11:11:42.091259673 +0200 @@ -0,0 +1,143 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "mlx5dv_query_port" "3" "" "" "" +.hy +.SH NAME +.PP +mlx5dv_query_port - Query non standard attributes of IB device port. +.SH SYNOPSIS +.IP +.nf +\f[C] +#include <infiniband/mlx5dv.h> + +int mlx5dv_query_port(struct ibv_context *context, + uint32_t port_num, + struct mlx5dv_port *info); +\f[R] +.fi +.SH DESCRIPTION +.PP +Query port info which can be used for some device commands over the DEVX +interface and when directly accessing the hardware resources. +.PP +A function that lets a user query hardware and configuration attributes +associated with the port. +.SH USAGE +.PP +A user should provide the port number to query. +On successful query \f[I]flags\f[R] will store a subset of the requested +attributes which are supported/relevant for that port. +.SH ARGUMENTS +.TP +\f[I]context\f[R] +RDMA device context to work on. +.TP +\f[I]port_num\f[R] +Port number to query. +.TP +## \f[I]info\f[R] +Stores the returned attributes from the kernel. +.IP +.nf +\f[C] +struct mlx5dv_port { + uint64_t flags; + uint16_t vport; + uint16_t vport_vhca_id; + uint16_t esw_owner_vhca_id; + uint16_t rsvd0; + uint64_t vport_steering_icm_rx; + uint64_t vport_steering_icm_tx; + struct mlx5dv_reg reg_c0; +}; +\f[R] +.fi +.TP +\f[I]flags\f[R] +Bit field of attributes, on successful query \f[I]flags\f[R] stores the +valid filled attributes. +.RS +.PP +MLX5DV_QUERY_PORT_VPORT: The vport number of that port. +.PP +MLX5DV_QUERY_PORT_VPORT_VHCA_ID: The VHCA ID of \f[I]vport_num\f[R]. +.PP +MLX5DV_QUERY_PORT_ESW_OWNER_VHCA_ID: The E-Switch owner of +\f[I]vport_num\f[R]. +.PP +MLX5DV_QUERY_PORT_VPORT_STEERING_ICM_RX: The ICM RX address when +directing traffic. +.PP +MLX5DV_QUERY_PORT_VPORT_STEERING_ICM_TX: The ICM TX address when +directing traffic. +.PP +MLX5DV_QUERY_PORT_VPORT_REG_C0: Register C0 value used to identify +egress of \f[I]vport_num\f[R]. +.RE +.TP +\f[I]vport\f[R] +The VPORT number of that port. +.TP +\f[I]vport_vhca_id\f[R] +The VHCA ID of \f[I]vport_num\f[R]. +.TP +\f[I]rsvd0\f[R] +A reserved field. +Not to be used. +.TP +\f[I]esw_owner_vhca_id\f[R] +The E-Switch owner of \f[I]vport_num\f[R]. +.TP +\f[I]vport_steering_ica_rx\f[R] +The ICM RX address when directing traffic. +.TP +\f[I]vport_steering_icm_tx\f[R] +The ICM TX address when directing traffic. +.TP +## reg_c0 +Register C0 value used to identify traffic of \f[I]vport_num\f[R]. +.IP +.nf +\f[C] +struct mlx5dv_reg { + uint32_t value; + uint32_t mask; +}; +\f[R] +.fi +.TP +\f[I]value\f[R] +The value that should be used as match. +.TP +\f[I]mask\f[R] +The mask that should be used when matching. +.SH RETURN VALUE +.PP +returns 0 on success, or the value of errno on failure (which indicates +the failure reason). +.SH EXAMPLE +.IP +.nf +\f[C] +for (i = 1; i <= ports; i++) { + ret = mlx5dv_query_port(context, i, &port_info); + if (ret) { + printf(\[dq]Error querying port %d\[rs]n\[dq], i); + break; + } + + printf(\[dq]Port: %d:\[rs]n\[dq], i); + + if (port_info.flags & MLX5DV_QUERY_PORT_VPORT) + printf(\[dq]\[rs]tvport_num: 0x%x\[rs]n\[dq], port_info.vport_num); + + if (port_info.flags & MLX5DV_QUERY_PORT_VPORT_REG_C0) + printf(\[dq]\[rs]treg_c0: val: 0x%x mask: 0x%x\[rs]n\[dq], + port_info.reg_c0.value, + port_info.reg_c0.mask); +} +\f[R] +.fi +.PP +Mark Bloch <mbl...@nvidia.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/f31915665317aa73d3c9d93494ac44fd7d538866 new/pandoc-prebuilt/f31915665317aa73d3c9d93494ac44fd7d538866 --- old/pandoc-prebuilt/f31915665317aa73d3c9d93494ac44fd7d538866 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/f31915665317aa73d3c9d93494ac44fd7d538866 2021-05-18 11:11:41.967258642 +0200 @@ -0,0 +1,47 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "mlx5dv_dm_map_op_addr" "3" "2021-1-21" "mlx5" "mlx5 Programmer\[cq]s Manual" +.hy +.SH NAME +.PP +mlx5dv_dm_map_op_addr - Get operation address of a device memory (DM) +.SH SYNOPSIS +.IP +.nf +\f[C] +#include <infiniband/mlx5dv.h> + +void *mlx5dv_dm_map_op_addr(struct ibv_dm *dm, uint8_t op); +\f[R] +.fi +.SH DESCRIPTION +.PP +\f[B]mlx5dv_dm_map_op_addr()\f[R] returns a mmaped address to the device +memory for the requested \f[B]op\f[R]. +.SH ARGUMENTS +.TP +\f[I]dm\f[R] +.IP +.nf +\f[C] +The associated ibv_dm for this operation. +\f[R] +.fi +.TP +\f[I]op\f[R] +.IP +.nf +\f[C] +Indicates the DM operation type, based on device specification. +\f[R] +.fi +.SH RETURN VALUE +.PP +Returns a pointer to the mmaped address, on error NULL will be returned +and errno will be set. +.SH SEE ALSO +.PP +\f[B]ibv_alloc_dm\f[R](3), \f[B]mlx5dv_alloc_dm\f[R](3), +.SH AUTHOR +.PP +Maor Gottlieb <ma...@nvidia.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/fa29d88a48409a61841ea15857c81feb01fd166d new/pandoc-prebuilt/fa29d88a48409a61841ea15857c81feb01fd166d --- old/pandoc-prebuilt/fa29d88a48409a61841ea15857c81feb01fd166d 2021-02-19 08:45:38.614177959 +0100 +++ new/pandoc-prebuilt/fa29d88a48409a61841ea15857c81feb01fd166d 1970-01-01 01:00:00.000000000 +0100 @@ -1,81 +0,0 @@ -.\" Automatically generated by Pandoc 2.9.2.1 -.\" -.TH "mlx5dv_devx_umem_reg, mlx5dv_devx_umem_dereg" "3" "" "" "" -.hy -.SH NAME -.PP -mlx5dv_devx_umem_reg - Register a user memory to be used by the devx -interface -.PP -mlx5dv_devx_umem_dereg - Deregister a devx umem object -.SH SYNOPSIS -.IP -.nf -\f[C] -#include <infiniband/mlx5dv.h> - -struct mlx5dv_devx_umem { - uint32_t umem_id; -}; - -struct mlx5dv_devx_umem * -mlx5dv_devx_umem_reg(struct ibv_context *context, void *addr, size_t size, - uint32_t access) - -int mlx5dv_devx_umem_dereg(struct mlx5dv_devx_umem *dv_devx_umem) -\f[R] -.fi -.SH DESCRIPTION -.PP -Register or deregister a user memory to be used by the devx interface. -.PP -The register verb exposes a UMEM DEVX object for user memory -registration for DMA. -The API to register the user memory gets as input the user address, -length and access flags, and provides to the user as output an object -which holds the UMEM ID returned by the firmware to this registered -memory. -.PP -The user will use that UMEM ID in device direct commands that use this -memory instead of the physical addresses list, for example upon -\f[I]mlx5dv_devx_obj_create\f[R] to create a QP. -.SH ARGUMENTS -.TP -\f[I]context\f[R] -.IP -.nf -\f[C] -RDMA device context to create the action on. -\f[R] -.fi -.TP -\f[I]addr\f[R] -The memory start address to register. -.TP -\f[I]size\f[R] -.IP -.nf -\f[C] -The size of *addr* buffer. -\f[R] -.fi -.TP -\f[I]access\f[R] -The desired memory protection attributes; it is either 0 or the bitwise -OR of one or more of \f[I]enum ibv_access_flags\f[R]. -.SH RETURN VALUE -.PP -Upon success \f[I]mlx5dv_devx_umem_reg\f[R] will return a new -\f[I]struct mlx5dv_devx_umem\f[R] object, on error NULL will be returned -and errno will be set. -.PP -\f[I]mlx5dv_devx_umem_dereg\f[R] returns 0 on success, or the value of -errno on failure (which indicates the failure reason). -.SH SEE ALSO -.PP -\f[I]mlx5dv_open_device(3)\f[R], \f[I]ibv_reg_mr(3)\f[R], -\f[I]mlx5dv_devx_obj_create(3)\f[R] -.PP -#AUTHOR -.PP -Yishai Hadas <yish...@mellanox.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/fed8d43c3078914b2141c0cf655d840638a9e921 new/pandoc-prebuilt/fed8d43c3078914b2141c0cf655d840638a9e921 --- old/pandoc-prebuilt/fed8d43c3078914b2141c0cf655d840638a9e921 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/fed8d43c3078914b2141c0cf655d840638a9e921 2021-05-18 11:11:41.643255948 +0200 @@ -0,0 +1,54 @@ +.\" Automatically generated by Pandoc 2.9.2.1 +.\" +.TH "mlx5dv_reserved_qpn_alloc / dealloc" "3" "2020-12-29" "mlx5" "mlx5 Programmer\[cq]s Manual" +.hy +.SH NAME +.PP +mlx5dv_reserved_qpn_alloc - Allocate a reserved QP number from device +.PP +mlx5dv_reserved_qpn_dealloc - Release the reserved QP number +.SH SYNOPSIS +.IP +.nf +\f[C] +#include <infiniband/mlx5dv.h> + +int mlx5dv_reserved_qpn_alloc(struct ibv_context *ctx, uint32_t *qpn); + +int mlx5dv_reserved_qpn_dealloc(struct ibv_context *ctx, uint32_t qpn); +\f[R] +.fi +.SH DESCRIPTION +.PP +When work with RDMA_CM RDMA_TCP_PS + external QP support, a client node +needs GUID level unique QP numbers to comply with the CM\[cq]s timewait +logic. +.PP +If a real unique QP is not allocated, a device global QPN value is +required and can be allocated via this interface. +.PP +The mlx5 DCI QP is such an example, which could connect to the remote +DCT\[cq]s multiple times as long as the application provides unique QPN +for each new RDMA_CM connection. +.PP +These 2 APIs provide the allocation/deallocation of a unique QP number +from/to device. +This qpn can be used with DC QPN in RDMA_CM connection establishment, +which will comply with the CM timewait kernel logic. +.SH ARGUMENTS +.TP +\f[I]ctx\f[R] +The device context to issue the action on. +.TP +\f[I]qpn\f[R] +The allocated QP number (for alloc API), or the QP number to be +deallocated (for dealloc API). +.SH RETURN VALUE +.PP +0 on success; EOPNOTSUPP if not supported, or other errno value on other +failures. +.SH AUTHOR +.PP +Mark Zhang <markzh...@nvidia.com> +.PP +Alex Rosenbaum <al...@nvidia.com> ++++++ rdma-core-33.1.0.2504c0bab0a8.tar.gz -> rdma-core-35.0.0.e29a698e9902.tar.gz ++++++ ++++ 70291 lines of diff (skipped)