User Manual

Rev 2.3-1.0.1
Mellanox Technologies
67
Querying the Hardware Time
Querying the hardware for time is done via the
ibv_exp_query_values verb.
For example:
ret = ibv_exp_query_values(context, IBV_EXP_VALUES_HW_CLOCK, &queried_values);
if (!ret && queried_values.comp_mask & IBV_EXP_VALUES_HW_CLOCK)
queried_time = queried_values.hwclock;
To change the queried time in nanoseconds resolution, use the IBV_
EXP_
VALUES_HW_CLOCK_NS
flag along with the hwclock_ns field.
ret = ibv_exp_query_values(context, IBV_EXP_VALUES_HW_CLOCK_NS, &queried_values);
if (!ret && queried_values.comp_mask & IBV_EXP_VALUES_HW_CLOCK_NS)
queried_time_ns = queried_values.hwclock_ns;
Querying the Hardware Time is available only on physical functions / native machines.
3.1.11 Flow Steering
Flow Steering is applicable to the mlx4 driver only.
Flow steering is a new model which steers network flows based on flow specifications to specific
QPs. Those flows can be either unicast or multicast network flows. In order to maintain flexibil-
ity, domains and priorities are used. Flow steering uses a methodology of flow attribute, which is
a combination of L2-L4 flow specifications, a destination QP and a priority
. Flow steering rules
may be inserted either by using ethtool or by using InfiniBand verbs. The verbs abstraction uses a
different terminology from the flow attribute (
ibv_exp_flow_attr), defined by a combination of
specifications (
struct ibv_exp_flow_spec_*).
3.1.11.1 Enable/Disable Flow Steering
Flow steering is generally enabled when the
log_num_mgm_entry_size module parameter is non
positive (e.g.,
-log_num_mgm_entry_size), meaning the absolute value of the parameter, is a bit
field. Every bit indicates a condition or an option regarding the flow steering mechanism:
bit Operation Description
b0 Force device managed Flow
Steering
When set to 1, it forces HCA to be enabled regardless of
whether NC-SI Flow Steering is supported or not.