net/mlx4_core: Dynamic VST to VST vlan/qos changes
Within VST mode, enable modifying the vlan and/or qos for a VF without requiring unbind/rebind. This requires firmware which supports the UPDATE_QP command. (If the command is not available, we fall back to requiring unbind/bind to activate these changes). To avoid race conditions with modify-qp on QPs that are affected by update-qp, this operation is performed on the comm_wq. If the update operation succeeds for all the necessary QPs, a vlan_unregister is performed for the abandoned vlan id. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
4e144d3a80
commit
b01978cacf
@@ -206,6 +206,40 @@ struct mlx4_qp_context {
|
||||
u32 reserved5[10];
|
||||
};
|
||||
|
||||
struct mlx4_update_qp_context {
|
||||
__be64 qp_mask;
|
||||
__be64 primary_addr_path_mask;
|
||||
__be64 secondary_addr_path_mask;
|
||||
u64 reserved1;
|
||||
struct mlx4_qp_context qp_context;
|
||||
u64 reserved2[58];
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_UPD_QP_MASK_PM_STATE = 32,
|
||||
MLX4_UPD_QP_MASK_VSD = 33,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_UPD_QP_PATH_MASK_PKEY_INDEX = 0 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_FSM = 1 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_MAC_INDEX = 2 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_FVL = 3 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_CV = 4 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_VLAN_INDEX = 5 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_HIDE_CQE_VLAN = 6 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_TX_BLOCK_UNTAGGED = 7 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_TX_BLOCK_1P = 8 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_TX_BLOCK_TAGGED = 9 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_RX_BLOCK_UNTAGGED = 10 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_RX_BLOCK_1P = 11 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_ETH_RX_BLOCK_TAGGED = 12 + 32,
|
||||
MLX4_UPD_QP_PATH_MASK_FEUP = 13 + 32,
|
||||
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,
|
||||
};
|
||||
|
||||
enum { /* param3 */
|
||||
MLX4_STRIP_VLAN = 1 << 30
|
||||
};
|
||||
|
Reference in New Issue
Block a user