Skip to content

Commit df75ad5

Browse files
Saeed Mahameedrleon
authored andcommitted
net/mlx5: SHAMPO: Introduce new SHAMPO specific HCA caps
Read and cache SHAMPO specific caps for header data split capabilities. Will be used in downstream patch. Signed-off-by: Saeed Mahameed <[email protected]> Reviewed-by: Dragos Tatulea <[email protected]> Signed-off-by: Tariq Toukan <[email protected]> Link: https://patch.msgid.link/[email protected] Reviewed-by: Jacob Keller <[email protected]> Reviewed-by: Kalesh AP <[email protected]> Signed-off-by: Leon Romanovsky <[email protected]>
1 parent e2685ef commit df75ad5

File tree

4 files changed

+34
-1
lines changed

4 files changed

+34
-1
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,12 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
281281
return err;
282282
}
283283

284+
if (MLX5_CAP_GEN(dev, shampo)) {
285+
err = mlx5_core_get_caps_mode(dev, MLX5_CAP_SHAMPO, HCA_CAP_OPMOD_GET_CUR);
286+
if (err)
287+
return err;
288+
}
289+
284290
return 0;
285291
}
286292

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,10 @@ int mlx5_core_get_caps_mode(struct mlx5_core_dev *dev, enum mlx5_cap_type cap_ty
368368
u16 opmod = (cap_type << 1) | (cap_mode & 0x01);
369369
int err;
370370

371+
if (WARN_ON(!dev->caps.hca[cap_type]))
372+
/* this cap_type must be added to mlx5_hca_caps_alloc() */
373+
return -EINVAL;
374+
371375
memset(in, 0, sizeof(in));
372376
out = kzalloc(out_sz, GFP_KERNEL);
373377
if (!out)
@@ -1788,6 +1792,7 @@ static const int types[] = {
17881792
MLX5_CAP_MACSEC,
17891793
MLX5_CAP_ADV_VIRTUALIZATION,
17901794
MLX5_CAP_CRYPTO,
1795+
MLX5_CAP_SHAMPO,
17911796
};
17921797

17931798
static void mlx5_hca_caps_free(struct mlx5_core_dev *dev)

include/linux/mlx5/device.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1245,6 +1245,7 @@ enum mlx5_cap_type {
12451245
MLX5_CAP_DEV_EVENT = 0x14,
12461246
MLX5_CAP_IPSEC,
12471247
MLX5_CAP_CRYPTO = 0x1a,
1248+
MLX5_CAP_SHAMPO = 0x1d,
12481249
MLX5_CAP_MACSEC = 0x1f,
12491250
MLX5_CAP_GENERAL_2 = 0x20,
12501251
MLX5_CAP_PORT_SELECTION = 0x25,
@@ -1470,6 +1471,9 @@ enum mlx5_qcam_feature_groups {
14701471
#define MLX5_CAP_MACSEC(mdev, cap)\
14711472
MLX5_GET(macsec_cap, (mdev)->caps.hca[MLX5_CAP_MACSEC]->cur, cap)
14721473

1474+
#define MLX5_CAP_SHAMPO(mdev, cap) \
1475+
MLX5_GET(shampo_cap, mdev->caps.hca[MLX5_CAP_SHAMPO]->cur, cap)
1476+
14731477
enum {
14741478
MLX5_CMD_STAT_OK = 0x0,
14751479
MLX5_CMD_STAT_INT_ERR = 0x1,

include/linux/mlx5/mlx5_ifc.h

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2327,7 +2327,9 @@ struct mlx5_ifc_wq_bits {
23272327
u8 headers_mkey[0x20];
23282328

23292329
u8 shampo_enable[0x1];
2330-
u8 reserved_at_1e1[0x4];
2330+
u8 reserved_at_1e1[0x1];
2331+
u8 shampo_mode[0x2];
2332+
u8 reserved_at_1e4[0x1];
23312333
u8 log_reservation_size[0x3];
23322334
u8 reserved_at_1e8[0x5];
23332335
u8 log_max_num_of_packets_per_reservation[0x3];
@@ -3699,6 +3701,22 @@ struct mlx5_ifc_crypto_cap_bits {
36993701
u8 reserved_at_80[0x780];
37003702
};
37013703

3704+
struct mlx5_ifc_shampo_cap_bits {
3705+
u8 reserved_at_0[0x3];
3706+
u8 shampo_log_max_reservation_size[0x5];
3707+
u8 reserved_at_8[0x3];
3708+
u8 shampo_log_min_reservation_size[0x5];
3709+
u8 shampo_min_mss_size[0x10];
3710+
3711+
u8 shampo_header_split[0x1];
3712+
u8 shampo_header_split_data_merge[0x1];
3713+
u8 reserved_at_22[0x1];
3714+
u8 shampo_log_max_headers_entry_size[0x5];
3715+
u8 reserved_at_28[0x18];
3716+
3717+
u8 reserved_at_40[0x7c0];
3718+
};
3719+
37023720
union mlx5_ifc_hca_cap_union_bits {
37033721
struct mlx5_ifc_cmd_hca_cap_bits cmd_hca_cap;
37043722
struct mlx5_ifc_cmd_hca_cap_2_bits cmd_hca_cap_2;

0 commit comments

Comments
 (0)