Skip to content

Commit 7e45c1e

Browse files
Binary-Eaterkuba-moo
authored andcommitted
net/mlx5: Add support for MTPTM and MTCTR registers
Make Management Precision Time Measurement (MTPTM) register and Management Cross Timestamp (MTCTR) register usable in mlx5 driver. Signed-off-by: Rahul Rameshbabu <[email protected]> Signed-off-by: Tariq Toukan <[email protected]> Reviewed-by: Wojciech Drewek <[email protected]> Tested-by: Vadim Fedorenko <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent e8fc78e commit 7e45c1e

File tree

4 files changed

+52
-1
lines changed

4 files changed

+52
-1
lines changed

drivers/net/ethernet/mellanox/mlx5/core/fw.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
224224
if (MLX5_CAP_GEN(dev, mcam_reg)) {
225225
mlx5_get_mcam_access_reg_group(dev, MLX5_MCAM_REGS_FIRST_128);
226226
mlx5_get_mcam_access_reg_group(dev, MLX5_MCAM_REGS_0x9100_0x917F);
227+
mlx5_get_mcam_access_reg_group(dev, MLX5_MCAM_REGS_0x9180_0x91FF);
227228
}
228229

229230
if (MLX5_CAP_GEN(dev, qcam_reg))

include/linux/mlx5/device.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1243,7 +1243,8 @@ enum mlx5_pcam_feature_groups {
12431243
enum mlx5_mcam_reg_groups {
12441244
MLX5_MCAM_REGS_FIRST_128 = 0x0,
12451245
MLX5_MCAM_REGS_0x9100_0x917F = 0x2,
1246-
MLX5_MCAM_REGS_NUM = 0x3,
1246+
MLX5_MCAM_REGS_0x9180_0x91FF = 0x3,
1247+
MLX5_MCAM_REGS_NUM = 0x4,
12471248
};
12481249

12491250
enum mlx5_mcam_feature_groups {
@@ -1392,6 +1393,10 @@ enum mlx5_qcam_feature_groups {
13921393
MLX5_GET(mcam_reg, (mdev)->caps.mcam[MLX5_MCAM_REGS_0x9100_0x917F], \
13931394
mng_access_reg_cap_mask.access_regs2.reg)
13941395

1396+
#define MLX5_CAP_MCAM_REG3(mdev, reg) \
1397+
MLX5_GET(mcam_reg, (mdev)->caps.mcam[MLX5_MCAM_REGS_0x9180_0x91FF], \
1398+
mng_access_reg_cap_mask.access_regs3.reg)
1399+
13951400
#define MLX5_CAP_MCAM_FEATURE(mdev, fld) \
13961401
MLX5_GET(mcam_reg, (mdev)->caps.mcam, mng_feature_cap_mask.enhanced_features.fld)
13971402

include/linux/mlx5/driver.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ enum {
159159
MLX5_REG_MSECQ = 0x9155,
160160
MLX5_REG_MSEES = 0x9156,
161161
MLX5_REG_MIRC = 0x9162,
162+
MLX5_REG_MTPTM = 0x9180,
163+
MLX5_REG_MTCTR = 0x9181,
162164
MLX5_REG_SBCAM = 0xB01F,
163165
MLX5_REG_RESOURCE_DUMP = 0xC000,
164166
MLX5_REG_DTOR = 0xC00E,

include/linux/mlx5/mlx5_ifc.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10401,6 +10401,18 @@ struct mlx5_ifc_mcam_access_reg_bits2 {
1040110401
u8 regs_31_to_0[0x20];
1040210402
};
1040310403

10404+
struct mlx5_ifc_mcam_access_reg_bits3 {
10405+
u8 regs_127_to_96[0x20];
10406+
10407+
u8 regs_95_to_64[0x20];
10408+
10409+
u8 regs_63_to_32[0x20];
10410+
10411+
u8 regs_31_to_2[0x1e];
10412+
u8 mtctr[0x1];
10413+
u8 mtptm[0x1];
10414+
};
10415+
1040410416
struct mlx5_ifc_mcam_reg_bits {
1040510417
u8 reserved_at_0[0x8];
1040610418
u8 feature_group[0x8];
@@ -10413,6 +10425,7 @@ struct mlx5_ifc_mcam_reg_bits {
1041310425
struct mlx5_ifc_mcam_access_reg_bits access_regs;
1041410426
struct mlx5_ifc_mcam_access_reg_bits1 access_regs1;
1041510427
struct mlx5_ifc_mcam_access_reg_bits2 access_regs2;
10428+
struct mlx5_ifc_mcam_access_reg_bits3 access_regs3;
1041610429
u8 reserved_at_0[0x80];
1041710430
} mng_access_reg_cap_mask;
1041810431

@@ -11166,6 +11179,34 @@ struct mlx5_ifc_mtmp_reg_bits {
1116611179
u8 sensor_name_lo[0x20];
1116711180
};
1116811181

11182+
struct mlx5_ifc_mtptm_reg_bits {
11183+
u8 reserved_at_0[0x10];
11184+
u8 psta[0x1];
11185+
u8 reserved_at_11[0xf];
11186+
11187+
u8 reserved_at_20[0x60];
11188+
};
11189+
11190+
enum {
11191+
MLX5_MTCTR_REQUEST_NOP = 0x0,
11192+
MLX5_MTCTR_REQUEST_PTM_ROOT_CLOCK = 0x1,
11193+
MLX5_MTCTR_REQUEST_FREE_RUNNING_COUNTER = 0x2,
11194+
MLX5_MTCTR_REQUEST_REAL_TIME_CLOCK = 0x3,
11195+
};
11196+
11197+
struct mlx5_ifc_mtctr_reg_bits {
11198+
u8 first_clock_timestamp_request[0x8];
11199+
u8 second_clock_timestamp_request[0x8];
11200+
u8 reserved_at_10[0x10];
11201+
11202+
u8 first_clock_valid[0x1];
11203+
u8 second_clock_valid[0x1];
11204+
u8 reserved_at_22[0x1e];
11205+
11206+
u8 first_clock_timestamp[0x40];
11207+
u8 second_clock_timestamp[0x40];
11208+
};
11209+
1116911210
union mlx5_ifc_ports_control_registers_document_bits {
1117011211
struct mlx5_ifc_bufferx_reg_bits bufferx_reg;
1117111212
struct mlx5_ifc_eth_2819_cntrs_grp_data_layout_bits eth_2819_cntrs_grp_data_layout;
@@ -11230,6 +11271,8 @@ union mlx5_ifc_ports_control_registers_document_bits {
1123011271
struct mlx5_ifc_mrtc_reg_bits mrtc_reg;
1123111272
struct mlx5_ifc_mtcap_reg_bits mtcap_reg;
1123211273
struct mlx5_ifc_mtmp_reg_bits mtmp_reg;
11274+
struct mlx5_ifc_mtptm_reg_bits mtptm_reg;
11275+
struct mlx5_ifc_mtctr_reg_bits mtctr_reg;
1123311276
u8 reserved_at_0[0x60e0];
1123411277
};
1123511278

0 commit comments

Comments
 (0)