Commit 6c72cb05 authored by Tariq Toukan's avatar Tariq Toukan Committed by Saeed Mahameed

net/mlx5e: Use bitmap field for profile features

Use a features bitmap field in mlx5e_profile to declare profile support
state of the different features.  Let it replace the existing
rx_ptp_support boolean. It will be extended to cover more features in a
downstream patch.
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 08ab0ff4
...@@ -956,6 +956,10 @@ struct mlx5e_rx_handlers { ...@@ -956,6 +956,10 @@ struct mlx5e_rx_handlers {
extern const struct mlx5e_rx_handlers mlx5e_rx_handlers_nic; extern const struct mlx5e_rx_handlers mlx5e_rx_handlers_nic;
enum mlx5e_profile_feature {
MLX5E_PROFILE_FEATURE_PTP_RX,
};
struct mlx5e_profile { struct mlx5e_profile {
int (*init)(struct mlx5_core_dev *mdev, int (*init)(struct mlx5_core_dev *mdev,
struct net_device *netdev); struct net_device *netdev);
...@@ -974,9 +978,12 @@ struct mlx5e_profile { ...@@ -974,9 +978,12 @@ struct mlx5e_profile {
const struct mlx5e_rx_handlers *rx_handlers; const struct mlx5e_rx_handlers *rx_handlers;
int max_tc; int max_tc;
u8 rq_groups; u8 rq_groups;
bool rx_ptp_support; u32 features;
}; };
#define mlx5e_profile_feature_cap(profile, feature) \
((profile)->features & (MLX5E_PROFILE_FEATURE_## feature))
void mlx5e_build_ptys2ethtool_map(void); void mlx5e_build_ptys2ethtool_map(void);
bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev); bool mlx5e_check_fragmented_striding_rq_cap(struct mlx5_core_dev *mdev);
......
...@@ -768,7 +768,7 @@ int mlx5e_ptp_alloc_rx_fs(struct mlx5e_priv *priv) ...@@ -768,7 +768,7 @@ int mlx5e_ptp_alloc_rx_fs(struct mlx5e_priv *priv)
{ {
struct mlx5e_ptp_fs *ptp_fs; struct mlx5e_ptp_fs *ptp_fs;
if (!priv->profile->rx_ptp_support) if (!mlx5e_profile_feature_cap(priv->profile, PTP_RX))
return 0; return 0;
ptp_fs = kzalloc(sizeof(*ptp_fs), GFP_KERNEL); ptp_fs = kzalloc(sizeof(*ptp_fs), GFP_KERNEL);
...@@ -783,7 +783,7 @@ void mlx5e_ptp_free_rx_fs(struct mlx5e_priv *priv) ...@@ -783,7 +783,7 @@ void mlx5e_ptp_free_rx_fs(struct mlx5e_priv *priv)
{ {
struct mlx5e_ptp_fs *ptp_fs = priv->fs.ptp_fs; struct mlx5e_ptp_fs *ptp_fs = priv->fs.ptp_fs;
if (!priv->profile->rx_ptp_support) if (!mlx5e_profile_feature_cap(priv->profile, PTP_RX))
return; return;
mlx5e_ptp_rx_unset_fs(priv); mlx5e_ptp_rx_unset_fs(priv);
...@@ -794,7 +794,7 @@ int mlx5e_ptp_rx_manage_fs(struct mlx5e_priv *priv, bool set) ...@@ -794,7 +794,7 @@ int mlx5e_ptp_rx_manage_fs(struct mlx5e_priv *priv, bool set)
{ {
struct mlx5e_ptp *c = priv->channels.ptp; struct mlx5e_ptp *c = priv->channels.ptp;
if (!priv->profile->rx_ptp_support) if (!mlx5e_profile_feature_cap(priv->profile, PTP_RX))
return 0; return 0;
if (!test_bit(MLX5E_STATE_OPENED, &priv->state)) if (!test_bit(MLX5E_STATE_OPENED, &priv->state))
......
...@@ -1934,7 +1934,7 @@ int mlx5e_modify_rx_cqe_compression_locked(struct mlx5e_priv *priv, bool new_val ...@@ -1934,7 +1934,7 @@ int mlx5e_modify_rx_cqe_compression_locked(struct mlx5e_priv *priv, bool new_val
if (curr_val == new_val) if (curr_val == new_val)
return 0; return 0;
if (new_val && !priv->profile->rx_ptp_support && rx_filter) { if (new_val && !mlx5e_profile_feature_cap(priv->profile, PTP_RX) && rx_filter) {
netdev_err(priv->netdev, netdev_err(priv->netdev,
"Profile doesn't support enabling of CQE compression while hardware time-stamping is enabled.\n"); "Profile doesn't support enabling of CQE compression while hardware time-stamping is enabled.\n");
return -EINVAL; return -EINVAL;
......
...@@ -4038,7 +4038,7 @@ int mlx5e_hwstamp_set(struct mlx5e_priv *priv, struct ifreq *ifr) ...@@ -4038,7 +4038,7 @@ int mlx5e_hwstamp_set(struct mlx5e_priv *priv, struct ifreq *ifr)
goto err_unlock; goto err_unlock;
} }
if (!priv->profile->rx_ptp_support) if (!mlx5e_profile_feature_cap(priv->profile, PTP_RX))
err = mlx5e_hwstamp_config_no_ptp_rx(priv, err = mlx5e_hwstamp_config_no_ptp_rx(priv,
config.rx_filter != HWTSTAMP_FILTER_NONE); config.rx_filter != HWTSTAMP_FILTER_NONE);
else else
...@@ -5093,7 +5093,7 @@ static const struct mlx5e_profile mlx5e_nic_profile = { ...@@ -5093,7 +5093,7 @@ static const struct mlx5e_profile mlx5e_nic_profile = {
.rq_groups = MLX5E_NUM_RQ_GROUPS(XSK), .rq_groups = MLX5E_NUM_RQ_GROUPS(XSK),
.stats_grps = mlx5e_nic_stats_grps, .stats_grps = mlx5e_nic_stats_grps,
.stats_grps_num = mlx5e_nic_stats_grps_num, .stats_grps_num = mlx5e_nic_stats_grps_num,
.rx_ptp_support = true, .features = BIT(MLX5E_PROFILE_FEATURE_PTP_RX),
}; };
static unsigned int static unsigned int
......
...@@ -1113,7 +1113,6 @@ static const struct mlx5e_profile mlx5e_rep_profile = { ...@@ -1113,7 +1113,6 @@ static const struct mlx5e_profile mlx5e_rep_profile = {
.rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR), .rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR),
.stats_grps = mlx5e_rep_stats_grps, .stats_grps = mlx5e_rep_stats_grps,
.stats_grps_num = mlx5e_rep_stats_grps_num, .stats_grps_num = mlx5e_rep_stats_grps_num,
.rx_ptp_support = false,
}; };
static const struct mlx5e_profile mlx5e_uplink_rep_profile = { static const struct mlx5e_profile mlx5e_uplink_rep_profile = {
...@@ -1134,7 +1133,6 @@ static const struct mlx5e_profile mlx5e_uplink_rep_profile = { ...@@ -1134,7 +1133,6 @@ static const struct mlx5e_profile mlx5e_uplink_rep_profile = {
.rq_groups = MLX5E_NUM_RQ_GROUPS(XSK), .rq_groups = MLX5E_NUM_RQ_GROUPS(XSK),
.stats_grps = mlx5e_ul_rep_stats_grps, .stats_grps = mlx5e_ul_rep_stats_grps,
.stats_grps_num = mlx5e_ul_rep_stats_grps_num, .stats_grps_num = mlx5e_ul_rep_stats_grps_num,
.rx_ptp_support = false,
}; };
/* e-Switch vport representors */ /* e-Switch vport representors */
......
...@@ -449,7 +449,6 @@ static const struct mlx5e_profile mlx5i_nic_profile = { ...@@ -449,7 +449,6 @@ static const struct mlx5e_profile mlx5i_nic_profile = {
.rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR), .rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR),
.stats_grps = mlx5i_stats_grps, .stats_grps = mlx5i_stats_grps,
.stats_grps_num = mlx5i_stats_grps_num, .stats_grps_num = mlx5i_stats_grps_num,
.rx_ptp_support = false,
}; };
/* mlx5i netdev NDos */ /* mlx5i netdev NDos */
......
...@@ -350,7 +350,6 @@ static const struct mlx5e_profile mlx5i_pkey_nic_profile = { ...@@ -350,7 +350,6 @@ static const struct mlx5e_profile mlx5i_pkey_nic_profile = {
.rx_handlers = &mlx5i_rx_handlers, .rx_handlers = &mlx5i_rx_handlers,
.max_tc = MLX5I_MAX_NUM_TC, .max_tc = MLX5I_MAX_NUM_TC,
.rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR), .rq_groups = MLX5E_NUM_RQ_GROUPS(REGULAR),
.rx_ptp_support = false,
}; };
const struct mlx5e_profile *mlx5i_pkey_get_profile(void) const struct mlx5e_profile *mlx5i_pkey_get_profile(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment