mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-17 10:52:26 +07:00
net/mlx5e: CQE compression control code reuse
This patch is intended for code reuse of mlx5e_modify_rx_cqe_compression function. Signed-off-by: Shaker Daibes <shakerd@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
b4e029da29
commit
5eb0249b43
@ -787,7 +787,7 @@ void mlx5e_pps_event_handler(struct mlx5e_priv *priv,
|
||||
struct ptp_clock_event *event);
|
||||
int mlx5e_hwstamp_set(struct net_device *dev, struct ifreq *ifr);
|
||||
int mlx5e_hwstamp_get(struct net_device *dev, struct ifreq *ifr);
|
||||
void mlx5e_modify_rx_cqe_compression(struct mlx5e_priv *priv, bool val);
|
||||
void mlx5e_modify_rx_cqe_compression_locked(struct mlx5e_priv *priv, bool val);
|
||||
|
||||
int mlx5e_vlan_rx_add_vid(struct net_device *dev, __always_unused __be16 proto,
|
||||
u16 vid);
|
||||
|
@ -106,11 +106,12 @@ int mlx5e_hwstamp_set(struct net_device *dev, struct ifreq *ifr)
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
mutex_lock(&priv->state_lock);
|
||||
/* RX HW timestamp */
|
||||
switch (config.rx_filter) {
|
||||
case HWTSTAMP_FILTER_NONE:
|
||||
/* Reset CQE compression to Admin default */
|
||||
mlx5e_modify_rx_cqe_compression(priv, priv->params.rx_cqe_compress_def);
|
||||
mlx5e_modify_rx_cqe_compression_locked(priv, priv->params.rx_cqe_compress_def);
|
||||
break;
|
||||
case HWTSTAMP_FILTER_ALL:
|
||||
case HWTSTAMP_FILTER_SOME:
|
||||
@ -128,14 +129,16 @@ int mlx5e_hwstamp_set(struct net_device *dev, struct ifreq *ifr)
|
||||
case HWTSTAMP_FILTER_PTP_V2_DELAY_REQ:
|
||||
/* Disable CQE compression */
|
||||
netdev_warn(dev, "Disabling cqe compression");
|
||||
mlx5e_modify_rx_cqe_compression(priv, false);
|
||||
mlx5e_modify_rx_cqe_compression_locked(priv, false);
|
||||
config.rx_filter = HWTSTAMP_FILTER_ALL;
|
||||
break;
|
||||
default:
|
||||
mutex_unlock(&priv->state_lock);
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
memcpy(&priv->tstamp.hwtstamp_config, &config, sizeof(config));
|
||||
mutex_unlock(&priv->state_lock);
|
||||
|
||||
return copy_to_user(ifr->ifr_data, &config,
|
||||
sizeof(config)) ? -EFAULT : 0;
|
||||
|
@ -1476,8 +1476,6 @@ static int set_pflag_rx_cqe_compress(struct net_device *netdev,
|
||||
{
|
||||
struct mlx5e_priv *priv = netdev_priv(netdev);
|
||||
struct mlx5_core_dev *mdev = priv->mdev;
|
||||
int err = 0;
|
||||
bool reset;
|
||||
|
||||
if (!MLX5_CAP_GEN(mdev, cqe_compression))
|
||||
return -ENOTSUPP;
|
||||
@ -1487,17 +1485,10 @@ static int set_pflag_rx_cqe_compress(struct net_device *netdev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
reset = test_bit(MLX5E_STATE_OPENED, &priv->state);
|
||||
|
||||
if (reset)
|
||||
mlx5e_close_locked(netdev);
|
||||
|
||||
MLX5E_SET_PFLAG(priv, MLX5E_PFLAG_RX_CQE_COMPRESS, enable);
|
||||
mlx5e_modify_rx_cqe_compression_locked(priv, enable);
|
||||
priv->params.rx_cqe_compress_def = enable;
|
||||
|
||||
if (reset)
|
||||
err = mlx5e_open_locked(netdev);
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mlx5e_handle_pflag(struct net_device *netdev,
|
||||
|
@ -155,17 +155,15 @@ static inline u32 mlx5e_decompress_cqes_start(struct mlx5e_rq *rq,
|
||||
return mlx5e_decompress_cqes_cont(rq, cq, 1, budget_rem) - 1;
|
||||
}
|
||||
|
||||
void mlx5e_modify_rx_cqe_compression(struct mlx5e_priv *priv, bool val)
|
||||
void mlx5e_modify_rx_cqe_compression_locked(struct mlx5e_priv *priv, bool val)
|
||||
{
|
||||
bool was_opened;
|
||||
|
||||
if (!MLX5_CAP_GEN(priv->mdev, cqe_compression))
|
||||
return;
|
||||
|
||||
mutex_lock(&priv->state_lock);
|
||||
|
||||
if (MLX5E_GET_PFLAG(priv, MLX5E_PFLAG_RX_CQE_COMPRESS) == val)
|
||||
goto unlock;
|
||||
return;
|
||||
|
||||
was_opened = test_bit(MLX5E_STATE_OPENED, &priv->state);
|
||||
if (was_opened)
|
||||
@ -176,8 +174,6 @@ void mlx5e_modify_rx_cqe_compression(struct mlx5e_priv *priv, bool val)
|
||||
if (was_opened)
|
||||
mlx5e_open_locked(priv->netdev);
|
||||
|
||||
unlock:
|
||||
mutex_unlock(&priv->state_lock);
|
||||
}
|
||||
|
||||
#define RQ_PAGE_SIZE(rq) ((1 << rq->buff.page_order) << PAGE_SHIFT)
|
||||
|
Loading…
Reference in New Issue
Block a user