diff options
author | Mark Bloch | 2018-01-30 11:46:34 +0100 |
---|---|---|
committer | Saeed Mahameed | 2018-02-23 21:36:38 +0100 |
commit | f80be5436de78d0231cfb79b368edb9b90c3b057 (patch) | |
tree | 2c2ddba5eb70320e4dac6e81429babdd8c3ee29a /drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | |
parent | net/mlx5: E-Switch, Increase number of FTEs in FDB in switchdev mode (diff) | |
download | kernel-qcow2-linux-f80be5436de78d0231cfb79b368edb9b90c3b057.tar.gz kernel-qcow2-linux-f80be5436de78d0231cfb79b368edb9b90c3b057.tar.xz kernel-qcow2-linux-f80be5436de78d0231cfb79b368edb9b90c3b057.zip |
net/mlx5: E-Switch, Optimize HW steering tables in switchdev mode
Under switchdev mode we insert an eswitch miss rule causing any
unmatched traffic to be sent towards the PF vport. This miss rule can
be optimized if we break it to two, one case is for multicast traffic and
the other for unicast.
Breaking the miss rule into two (unicast and multicast) allows the firmware
to program the hardware in a more efficient way.
Using ConncetX-5 Ex with IXIA and testpmd (which use IB representors):
IXIA -> NIC -> PF -> IB representor -> NIC -> VF:
- Without this optimization: 9.2 MPPS.
- With this optimization: 18 MPPS.
VF -> NIC -> IB representor-> PF -> NIC -> IXIA:
- Without this optimization: 17 MPPS.
- With this optimization: 23.4 MPPS.
Signed-off-by: Mark Bloch <markb@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx5/core/eswitch.h')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h index 9c1e1a2d02ef..98d2177d0806 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h @@ -129,7 +129,8 @@ struct mlx5_eswitch_fdb { struct mlx5_flow_table *fdb; struct mlx5_flow_group *send_to_vport_grp; struct mlx5_flow_group *miss_grp; - struct mlx5_flow_handle *miss_rule; + struct mlx5_flow_handle *miss_rule_uni; + struct mlx5_flow_handle *miss_rule_multi; int vlan_push_pop_refcount; } offloads; }; |