net/mlx4_core: Add support for filtering multicast loopback
Update device capabilities regarding HW filtering multicast loopback support. Add MLX4_UPDATE_QP_ETH_SRC_CHECK_MC_LB attribute to mlx4_update_qp to enable changing QP context to support filtering incoming multicast loopback traffic according the sender's counter index. Set the corresponding bits in QP context to force the loopback source checks if attribute is given and HW supports it. Signed-off-by: Maor Gottlieb <maorg@mellanox.com> Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
ddf9529be1
commit
9a89283597
5 changed files with 68 additions and 13 deletions
|
|
@ -214,6 +214,8 @@ enum {
|
|||
MLX4_DEV_CAP_FLAG2_IGNORE_FCS = 1LL << 28,
|
||||
MLX4_DEV_CAP_FLAG2_PHV_EN = 1LL << 29,
|
||||
MLX4_DEV_CAP_FLAG2_SKIP_OUTER_VLAN = 1LL << 30,
|
||||
MLX4_DEV_CAP_FLAG2_UPDATE_QP_SRC_CHECK_LB = 1ULL << 31,
|
||||
MLX4_DEV_CAP_FLAG2_LB_SRC_CHK = 1ULL << 32,
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
|||
|
|
@ -135,7 +135,10 @@ struct mlx4_rss_context {
|
|||
|
||||
struct mlx4_qp_path {
|
||||
u8 fl;
|
||||
u8 vlan_control;
|
||||
union {
|
||||
u8 vlan_control;
|
||||
u8 control;
|
||||
};
|
||||
u8 disable_pkey_check;
|
||||
u8 pkey_index;
|
||||
u8 counter_index;
|
||||
|
|
@ -156,9 +159,16 @@ struct mlx4_qp_path {
|
|||
};
|
||||
|
||||
enum { /* fl */
|
||||
MLX4_FL_CV = 1 << 6,
|
||||
MLX4_FL_ETH_HIDE_CQE_VLAN = 1 << 2
|
||||
MLX4_FL_CV = 1 << 6,
|
||||
MLX4_FL_ETH_HIDE_CQE_VLAN = 1 << 2,
|
||||
MLX4_FL_ETH_SRC_CHECK_MC_LB = 1 << 1,
|
||||
MLX4_FL_ETH_SRC_CHECK_UC_LB = 1 << 0,
|
||||
};
|
||||
|
||||
enum { /* control */
|
||||
MLX4_CTRL_ETH_SRC_CHECK_IF_COUNTER = 1 << 7,
|
||||
};
|
||||
|
||||
enum { /* vlan_control */
|
||||
MLX4_VLAN_CTRL_ETH_TX_BLOCK_TAGGED = 1 << 6,
|
||||
MLX4_VLAN_CTRL_ETH_TX_BLOCK_PRIO_TAGGED = 1 << 5, /* 802.1p priority tag */
|
||||
|
|
@ -254,6 +264,8 @@ enum {
|
|||
MLX4_UPD_QP_PATH_MASK_SCHED_QUEUE = 14 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_IF_COUNTER_INDEX = 15 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_FVL_RX = 16 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_SRC_CHECK_UC_LB = 18 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_SRC_CHECK_MC_LB = 19 + 32,
|
||||
};
|
||||
|
||||
enum { /* param3 */
|
||||
|
|
@ -436,11 +448,13 @@ enum mlx4_update_qp_attr {
|
|||
MLX4_UPDATE_QP_VSD = 1 << 1,
|
||||
MLX4_UPDATE_QP_RATE_LIMIT = 1 << 2,
|
||||
MLX4_UPDATE_QP_QOS_VPORT = 1 << 3,
|
||||
MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 4) - 1
|
||||
MLX4_UPDATE_QP_ETH_SRC_CHECK_MC_LB = 1 << 4,
|
||||
MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 5) - 1
|
||||
};
|
||||
|
||||
enum mlx4_update_qp_params_flags {
|
||||
MLX4_UPDATE_QP_PARAMS_FLAGS_VSD_ENABLE = 1 << 0,
|
||||
MLX4_UPDATE_QP_PARAMS_FLAGS_ETH_CHECK_MC_LB = 1 << 0,
|
||||
MLX4_UPDATE_QP_PARAMS_FLAGS_VSD_ENABLE = 1 << 1,
|
||||
};
|
||||
|
||||
struct mlx4_update_qp_params {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue