diff options
author | Matan Barak <matanb@mellanox.com> | 2014-12-11 10:58:00 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-11 14:47:36 -0500 |
commit | 7d077cd34eabb2ffd05abe0f2cad01da1ef11712 (patch) | |
tree | 91215913abb8d16177517d254f677c7119461875 /drivers/net/ethernet/mellanox/mlx4/fw.h | |
parent | 431df8c7e9708433459fd806a08308997de43121 (diff) | |
download | linux-7d077cd34eabb2ffd05abe0f2cad01da1ef11712.tar.gz linux-7d077cd34eabb2ffd05abe0f2cad01da1ef11712.tar.bz2 linux-7d077cd34eabb2ffd05abe0f2cad01da1ef11712.zip |
net/mlx4: Add support for A0 steering
Add the required firmware commands for A0 steering and a way to enable
that. The firmware support focuses on INIT_HCA, QUERY_HCA, QUERY_PORT,
QUERY_DEV_CAP and QUERY_FUNC_CAP commands. Those commands are used
to configure and query the device.
The different A0 DMFS (steering) modes are:
Static - optimized performance, but flow steering rules are
limited. This mode should be choosed explicitly by the user
in order to be used.
Dynamic - this mode should be explicitly choosed by the user.
In this mode, the FW works in optimized steering mode as long as
it can and afterwards automatically drops to classic (full) DMFS.
Disable - this mode should be explicitly choosed by the user.
The user instructs the system not to use optimized steering, even if
the FW supports Dynamic A0 DMFS (and thus will be able to use optimized
steering in Default A0 DMFS mode).
Default - this mode is implicitly choosed. In this mode, if the FW
supports Dynamic A0 DMFS, it'll work in this mode. Otherwise, it'll
work at Disable A0 DMFS mode.
Under SRIOV configuration, when the A0 steering mode is enabled,
older guest VF drivers who aren't using the RX QP allocation flag
(MLX4_RESERVE_A0_QP) will get a QP from the general range and
fail when attempting to register a steering rule. To avoid that,
the PF context behaviour is changed once on A0 static mode, to
require support for the allocation flag in VF drivers too.
In order to enable A0 steering, we use log_num_mgm_entry_size param.
If the value of the parameter is not positive, we treat the absolute
value of log_num_mgm_entry_size as a bit field. Setting bit 2 of this
bit field enables static A0 steering.
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/fw.h')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/fw.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.h b/drivers/net/ethernet/mellanox/mlx4/fw.h index 744398b7ab5e..794e2826609a 100644 --- a/drivers/net/ethernet/mellanox/mlx4/fw.h +++ b/drivers/net/ethernet/mellanox/mlx4/fw.h @@ -60,6 +60,7 @@ struct mlx4_port_cap { int vendor_oui; u16 wavelength; u64 trans_code; + u8 dmfs_optimized_state; }; struct mlx4_dev_cap { @@ -124,6 +125,8 @@ struct mlx4_dev_cap { int max_gso_sz; int max_rss_tbl_sz; u32 max_counters; + u32 dmfs_high_rate_qpn_base; + u32 dmfs_high_rate_qpn_range; struct mlx4_port_cap port_cap[MLX4_MAX_PORTS + 1]; }; @@ -194,6 +197,7 @@ struct mlx4_init_hca_param { u8 mw_enabled; /* Enable memory windows */ u8 uar_page_sz; /* log pg sz in 4k chunks */ u8 steering_mode; /* for QUERY_HCA */ + u8 dmfs_high_steer_mode; /* for QUERY_HCA */ u64 dev_cap_enabled; u16 cqe_size; /* For use only when CQE stride feature enabled */ u16 eqe_size; /* For use only when EQE stride feature enabled */ |