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-12-06 23:59:08 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rdma-core (Old) and /work/SRC/openSUSE:Factory/.rdma-core.new.31177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rdma-core" Mon Dec 6 23:59:08 2021 rev:48 rq:935385 version:38.0 Changes: -------- --- /work/SRC/openSUSE:Factory/rdma-core/rdma-core.changes 2021-10-19 23:03:27.525262906 +0200 +++ /work/SRC/openSUSE:Factory/.rdma-core.new.31177/rdma-core.changes 2021-12-06 23:59:17.664583032 +0100 @@ -1,0 +2,12 @@ +Thu Dec 2 15:13:22 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> + +- Update to v38.0 (jsc#SLE-18383) + - Bugfixes on all providers + - New provider for irdma support + +------------------------------------------------------------------- +Thu Dec 2 14:48:56 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemar...@suse.com> + +- Add rdma-ndd to recommended depencies of rdma-core + +------------------------------------------------------------------- Old: ---- rdma-core-37.1.0.02d96eb72943.tar.gz New: ---- rdma-core-38.0.0.02361e3b8659.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rdma-core.spec ++++++ --- /var/tmp/diff_new_pack.gbnz7B/_old 2021-12-06 23:59:18.324580698 +0100 +++ /var/tmp/diff_new_pack.gbnz7B/_new 2021-12-06 23:59:18.328580684 +0100 @@ -25,9 +25,9 @@ %define with_pyverbs 0 %endif -%define git_ver .0.02d96eb72943 +%define git_ver .0.02361e3b8659 Name: rdma-core -Version: 37.1 +Version: 38.0 Release: 0 Summary: RDMA core userspace libraries and daemons License: BSD-2-Clause OR GPL-2.0-only @@ -97,6 +97,7 @@ Requires: kmod Requires: systemd Requires: udev +Recommends: rdma-ndd # SUSE previously shipped rdma as a stand-alone # package which we're supplanting here. @@ -229,6 +230,7 @@ - libhns: HiSilicon Hip06 SoC - libi40iw: Intel Ethernet Connection X722 RDMA - libipathverbs: QLogic InfiniPath HCA +- libirdma: Intel Ethernet Connection RDMA - libmlx4: Mellanox ConnectX-3 InfiniBand HCA - libmlx5: Mellanox Connect-IB/X-4+ InfiniBand HCA - libmthca: Mellanox InfiniBand HCA ++++++ _service ++++++ --- /var/tmp/diff_new_pack.gbnz7B/_old 2021-12-06 23:59:18.372580528 +0100 +++ /var/tmp/diff_new_pack.gbnz7B/_new 2021-12-06 23:59:18.372580528 +0100 @@ -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">02d96eb72943e71eb7c127f13afd167f5c83cb0c</param> + <param name="revision">02361e3b865995ce251923390df0d5a5c821195a</param> <param name="extract">suse/rdma-core.spec</param> </service> <service name="recompress" mode="disabled"> ++++++ prebuilt-pandoc.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pandoc-prebuilt/4b6808384ad489ec8e30e48c27ef2f172757b39c new/pandoc-prebuilt/4b6808384ad489ec8e30e48c27ef2f172757b39c --- old/pandoc-prebuilt/4b6808384ad489ec8e30e48c27ef2f172757b39c 2021-10-15 13:41:18.201699418 +0200 +++ new/pandoc-prebuilt/4b6808384ad489ec8e30e48c27ef2f172757b39c 1970-01-01 01:00:00.000000000 +0100 @@ -1,496 +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, -mlx5dv_dr_domain_allow_duplicate_rules - Manage flow domains -.PP -mlx5dv_dr_table_create, mlx5dv_dr_table_destroy - Manage flow tables -.PP -mlx5dv_dr_matcher_create, mlx5dv_dr_matcher_destroy, -mlx5dv_dr_matcher_set_layout - 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 - Create packet destination QP -action -.PP -mlx5dv_dr_action_create_dest_table - Create packet destination dr table -action -.PP -mlx5dv_dr_action_create_dest_vport - Create packet destination vport -action -.PP -mlx5dv_dr_action_create_dest_ib_port - Create packet destination IB port -action -.PP -mlx5dv_dr_action_create_dest_devx_tir - Create packet destination TIR -action -.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); - -void mlx5dv_dr_domain_allow_duplicate_rules(struct mlx5dv_dr_domain *dmn, bool allow); - -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); - - -int mlx5dv_dr_matcher_set_layout(struct mlx5dv_dr_matcher *matcher, struct mlx5dv_dr_matcher_layout *matcher_layout); - -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_ib_port( - struct mlx5dv_dr_domain *domain, - uint32_t ib_port); - -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. -.PP -\f[I]mlx5dv_dr_domain_allow_duplicate_rules()\f[R] is used to allow or -prevent insertion of rules matching on same fields(duplicates) on non -root tables, by default this feature is allowed. -.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. -.PP -\f[I]mlx5dv_dr_matcher_set_layout()\f[R] is used to set specific layout -parameters of a matcher, on some conditions setting some attributes -might not be supported, in such cases ENOTSUP will be returned. -\f[B]flags\f[R] should be a set of type \f[I]enum -mlx5dv_dr_matcher_layout_flags\f[R]: -.PP -\f[B]MLX5DV_DR_MATCHER_LAYOUT_RESIZABLE\f[R]: The matcher can resize its -scale and resources according to the rules that are inserted or removed. -.PP -\f[B]MLX5DV_DR_MATCHER_LAYOUT_NUM_RULE\f[R]: Indicates a hint from the -application about the number of the rules the matcher is expected to -handle. -This allows preallocation of matcher resources for faster rule updates -when using with non-resizable layout mode. -.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_ib_port\f[R] creates a forwarding -action to a \f[B]ib_port\f[R] on the same \f[B]domain\f[R]. -The valid range of ports is a based on the capability phys_port_cnt_ex -provided by ibq_query_device_ex and it is possible to query the ports -details using mlx5dv_query_port. -Action is supported 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/b3585782cda178065de7d73b1465c0fec7219f97 new/pandoc-prebuilt/b3585782cda178065de7d73b1465c0fec7219f97 --- old/pandoc-prebuilt/b3585782cda178065de7d73b1465c0fec7219f97 1970-01-01 01:00:00.000000000 +0100 +++ new/pandoc-prebuilt/b3585782cda178065de7d73b1465c0fec7219f97 2021-12-02 15:56:12.515686421 +0100 @@ -0,0 +1,527 @@ +.\" 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, +mlx5dv_dr_domain_allow_duplicate_rules - Manage flow domains +.PP +mlx5dv_dr_table_create, mlx5dv_dr_table_destroy - Manage flow tables +.PP +mlx5dv_dr_matcher_create, mlx5dv_dr_matcher_destroy, +mlx5dv_dr_matcher_set_layout - 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 - Create packet destination QP +action +.PP +mlx5dv_dr_action_create_dest_table - Create packet destination dr table +action +.PP +mlx5dv_dr_action_create_dest_vport - Create packet destination vport +action +.PP +mlx5dv_dr_action_create_dest_ib_port - Create packet destination IB port +action +.PP +mlx5dv_dr_action_create_dest_devx_tir - Create packet destination TIR +action +.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 +.PP +mlx5dv_dr_aso_other_domain_link, mlx5dv_dr_aso_other_domain_unlink - +link/unlink ASO devx object to work with different domains +.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); + +void mlx5dv_dr_domain_allow_duplicate_rules(struct mlx5dv_dr_domain *dmn, bool allow); + +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); + + +int mlx5dv_dr_matcher_set_layout(struct mlx5dv_dr_matcher *matcher, struct mlx5dv_dr_matcher_layout *matcher_layout); + +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_ib_port( + struct mlx5dv_dr_domain *domain, + uint32_t ib_port); + +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); + +int mlx5dv_dr_aso_other_domain_link(struct mlx5dv_devx_obj *devx_obj, + struct mlx5dv_dr_domain *peer_dmn, + struct mlx5dv_dr_domain *dmn, + uint32_t flags, + uint8_t return_reg_c); + +int mlx5dv_dr_aso_other_domain_unlink(struct mlx5dv_devx_obj *devx_obj, + struct mlx5dv_dr_domain *dmn); +\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. +.PP +\f[I]mlx5dv_dr_domain_allow_duplicate_rules()\f[R] is used to allow or +prevent insertion of rules matching on same fields(duplicates) on non +root tables, by default this feature is allowed. +.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. +.PP +\f[I]mlx5dv_dr_matcher_set_layout()\f[R] is used to set specific layout +parameters of a matcher, on some conditions setting some attributes +might not be supported, in such cases ENOTSUP will be returned. +\f[B]flags\f[R] should be a set of type \f[I]enum +mlx5dv_dr_matcher_layout_flags\f[R]: +.PP +\f[B]MLX5DV_DR_MATCHER_LAYOUT_RESIZABLE\f[R]: The matcher can resize its +scale and resources according to the rules that are inserted or removed. +.PP +\f[B]MLX5DV_DR_MATCHER_LAYOUT_NUM_RULE\f[R]: Indicates a hint from the +application about the number of the rules the matcher is expected to +handle. +This allows preallocation of matcher resources for faster rule updates +when using with non-resizable layout mode. +.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_ib_port\f[R] creates a forwarding +action to a \f[B]ib_port\f[R] on the same \f[B]domain\f[R]. +The valid range of ports is a based on the capability phys_port_cnt_ex +provided by ibq_query_device_ex and it is possible to query the ports +details using mlx5dv_query_port. +Action is supported 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. +.SS Other +.PP +\f[I]mlx5dv_dr_aso_other_domain_link()\f[R] links the ASO devx object, +\f[B]devx_obj\f[R] to a domain \f[B]dmn\f[R], this will allow to create +a rule with ASO action using the given object on the linked domain +\f[B]dmn\f[R]. +\f[B]peer_dmn\f[R] is the domain that the ASO devx object was created +on. +\f[B]dmn\f[R] is the domain that ASO devx object will be linked to. +\f[B]flags\f[R] choose the specific wanted behavior of this object +according to the flags, same as for ASO action creation flags. +\f[B]regc_index\f[R] After a packet hits the rule with the ASO object +the value of the ASO object will be copied into the regc register +indicated by this param, and then we can use the value for matching in +the following DR rules. +.PP +\f[I]mlx5dv_dr_aso_other_domain_unlink()\f[R] will unlink the +\f[B]devx_obj\f[R] from the linked \f[B]dmn\f[R]. +\f[B]dmn\f[R] is the domain that ASO devx object is linked to. +.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> ++++++ rdma-core-37.1.0.02d96eb72943.tar.gz -> rdma-core-38.0.0.02361e3b8659.tar.gz ++++++ ++++ 62310 lines of diff (skipped)