diff options
| author | Huy Nguyen <huyn@mellanox.com> | 2017-07-18 17:08:46 -0400 |
|---|---|---|
| committer | Saeed Mahameed <saeedm@mellanox.com> | 2017-11-05 00:26:21 -0400 |
| commit | 415a64aa8dc6b4fc478609c549ca652d95a12f13 (patch) | |
| tree | 8c72645e9ebdf569a384cb60540c54d329895afa /include | |
| parent | 71c70eb21c33c60433b95e72a59d40bb128db649 (diff) | |
net/mlx5: QPTS and QPDPM register firmware command support
The QPTS register allows changing the priority trust state between pcp and
dscp. Add support to get/set trust state from device. When the port is
in pcp/dscp trust state, packet is routed by hardware to matching priority
based on its pcp/dscp value respectively.
The QPDPM register allow channing the dscp to priority mapping. Add support
to get/set dscp to priority mapping from device.
Note that to change a dscp mapping, the "e" bit of this dscp structure
must be set in the QPDPM firmware command.
Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Reviewed-by: Parav Pandit <parav@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mlx5/driver.h | 7 | ||||
| -rw-r--r-- | include/linux/mlx5/mlx5_ifc.h | 20 | ||||
| -rw-r--r-- | include/linux/mlx5/port.h | 5 |
3 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index ed5be52282ea..a886b51511ab 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
| @@ -107,8 +107,10 @@ enum { | |||
| 107 | }; | 107 | }; |
| 108 | 108 | ||
| 109 | enum { | 109 | enum { |
| 110 | MLX5_REG_QPTS = 0x4002, | ||
| 110 | MLX5_REG_QETCR = 0x4005, | 111 | MLX5_REG_QETCR = 0x4005, |
| 111 | MLX5_REG_QTCT = 0x400a, | 112 | MLX5_REG_QTCT = 0x400a, |
| 113 | MLX5_REG_QPDPM = 0x4013, | ||
| 112 | MLX5_REG_QCAM = 0x4019, | 114 | MLX5_REG_QCAM = 0x4019, |
| 113 | MLX5_REG_DCBX_PARAM = 0x4020, | 115 | MLX5_REG_DCBX_PARAM = 0x4020, |
| 114 | MLX5_REG_DCBX_APP = 0x4021, | 116 | MLX5_REG_DCBX_APP = 0x4021, |
| @@ -142,6 +144,11 @@ enum { | |||
| 142 | MLX5_REG_MCAM = 0x907f, | 144 | MLX5_REG_MCAM = 0x907f, |
| 143 | }; | 145 | }; |
| 144 | 146 | ||
| 147 | enum mlx5_qpts_trust_state { | ||
| 148 | MLX5_QPTS_TRUST_PCP = 1, | ||
| 149 | MLX5_QPTS_TRUST_DSCP = 2, | ||
| 150 | }; | ||
| 151 | |||
| 145 | enum mlx5_dcbx_oper_mode { | 152 | enum mlx5_dcbx_oper_mode { |
| 146 | MLX5E_DCBX_PARAM_VER_OPER_HOST = 0x0, | 153 | MLX5E_DCBX_PARAM_VER_OPER_HOST = 0x0, |
| 147 | MLX5E_DCBX_PARAM_VER_OPER_AUTO = 0x3, | 154 | MLX5E_DCBX_PARAM_VER_OPER_AUTO = 0x3, |
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index f127c5b310c5..3e5363f760dd 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h | |||
| @@ -8578,6 +8578,26 @@ struct mlx5_ifc_qetc_reg_bits { | |||
| 8578 | struct mlx5_ifc_ets_global_config_reg_bits global_configuration; | 8578 | struct mlx5_ifc_ets_global_config_reg_bits global_configuration; |
| 8579 | }; | 8579 | }; |
| 8580 | 8580 | ||
| 8581 | struct mlx5_ifc_qpdpm_dscp_reg_bits { | ||
| 8582 | u8 e[0x1]; | ||
| 8583 | u8 reserved_at_01[0x0b]; | ||
| 8584 | u8 prio[0x04]; | ||
| 8585 | }; | ||
| 8586 | |||
| 8587 | struct mlx5_ifc_qpdpm_reg_bits { | ||
| 8588 | u8 reserved_at_0[0x8]; | ||
| 8589 | u8 local_port[0x8]; | ||
| 8590 | u8 reserved_at_10[0x10]; | ||
| 8591 | struct mlx5_ifc_qpdpm_dscp_reg_bits dscp[64]; | ||
| 8592 | }; | ||
| 8593 | |||
| 8594 | struct mlx5_ifc_qpts_reg_bits { | ||
| 8595 | u8 reserved_at_0[0x8]; | ||
| 8596 | u8 local_port[0x8]; | ||
| 8597 | u8 reserved_at_10[0x2d]; | ||
| 8598 | u8 trust_state[0x3]; | ||
| 8599 | }; | ||
| 8600 | |||
| 8581 | struct mlx5_ifc_qtct_reg_bits { | 8601 | struct mlx5_ifc_qtct_reg_bits { |
| 8582 | u8 reserved_at_0[0x8]; | 8602 | u8 reserved_at_0[0x8]; |
| 8583 | u8 port_number[0x8]; | 8603 | u8 port_number[0x8]; |
diff --git a/include/linux/mlx5/port.h b/include/linux/mlx5/port.h index c59af8ab753a..035f0d4dc9fe 100644 --- a/include/linux/mlx5/port.h +++ b/include/linux/mlx5/port.h | |||
| @@ -179,4 +179,9 @@ int mlx5_query_module_eeprom(struct mlx5_core_dev *dev, | |||
| 179 | 179 | ||
| 180 | int mlx5_query_port_dcbx_param(struct mlx5_core_dev *mdev, u32 *out); | 180 | int mlx5_query_port_dcbx_param(struct mlx5_core_dev *mdev, u32 *out); |
| 181 | int mlx5_set_port_dcbx_param(struct mlx5_core_dev *mdev, u32 *in); | 181 | int mlx5_set_port_dcbx_param(struct mlx5_core_dev *mdev, u32 *in); |
| 182 | |||
| 183 | int mlx5_set_trust_state(struct mlx5_core_dev *mdev, u8 trust_state); | ||
| 184 | int mlx5_query_trust_state(struct mlx5_core_dev *mdev, u8 *trust_state); | ||
| 185 | int mlx5_set_dscp2prio(struct mlx5_core_dev *mdev, u8 dscp, u8 prio); | ||
| 186 | int mlx5_query_dscp2prio(struct mlx5_core_dev *mdev, u8 *dscp2prio); | ||
| 182 | #endif /* __MLX5_PORT_H__ */ | 187 | #endif /* __MLX5_PORT_H__ */ |
