User Manual
Flow Steering support in InfiniBand is determined according to the
EXP_MANAGED_FLOW_STEERING flag.
Rev 2.3-1.0.1
Mellanox Technologies
69
3.1.11.3 A0 Static Device Managed Flow Steering
This mode enables fast steering, however it might impact flexibility. Using it increases the packet
rate performance by ~30%, with the following limitations for Ethernet link-layer unicast QPs:
• Limits the number of opened RSS Kernel QPs to 96. MACs should be unique (1 MAC
per 1 QP).
The number of VFs is limited.
• When creating Flow Steering rules for user QPs, only MAC--> QP rules are allowed.
Both MACs and QPs should be unique between rules. Only 62 such rules could be cre-
ated
• When creating rules with Ethtool, MAC--> QP rules could be used, where the QP must
be the indirection (RSS) QP
. Creating rules that indirect traffic to other rings is not
allowed. Ethtool MAC rules to drop packets (action -1) are supported.
• RFS is not supported in this mode
• VLAN is not supported in this mode
3.1.11.4 Flow Domains and Priorities
Flow steering defines the concept of domain and priority. Each domain represents a user agent
that can attach a flow
. The domains are prioritized. A higher priority domain will always super-
sede a lower priority domain when their flow specifications overlap. Setting a lower priority
value will result in higher priority
.
In addition to the domain, there is priority within each of the domains. Each domain can have at
most 2^12 priorities in accordance with its needs.
The following are the domains at a descending order of priority:
• User V
erbs allows a user application QP to be attached into a specified flow when using
ibv_exp_create_flow and ibv_exp_destroy_flow verbs
•
ibv_
exp_
create_flow
struct ibv_exp_flow *ibv_exp_create_flow(struct ibv_qp *qp, struct ibv_exp_flow_attr
*flow)
Input parameters:
• struct ibv_qp - the attached QP.
• struct ibv_exp_flow_attr - attaches the QP to the flow specified. The flow contains mandatory
control parameters and optional L2, L3 and L4 headers. The optional headers are detected by setting the
size and num_of_specs fields:
struct ibv_
exp_
flow_attr can be followed by the optional flow headers structs:
struct ibv_
exp_
flow_spec_ib
struct ibv_
exp_
flow_spec_eth
struct ibv_
exp_
flow_spec_ipv4
struct ibv_
exp_
flow_spec_tcp_udp
For further information, please refer to the ibv_exp_create_flow man page.