On Fri, 12 May 2017 14:56:45 +0300 Saeed Mahameed <sae...@mellanox.com> wrote:
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h > b/drivers/net/ethernet/mellanox/mlx5/core/en.h > index 0099a3e397bc..c41cf7e82795 100644 > --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h > +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h > @@ -756,6 +756,7 @@ struct mlx5e_priv { > struct mlx5_core_dev *mdev; > struct net_device *netdev; > struct mlx5e_stats stats; > + rwlock_t stats_lock; A reader-writer lock is slower than a spin_lock. The only case where reader/writer lock is preferred is when writer will hold onto the lock for a significant amount of time. Also you only need each statistic to be atomic, the network device API never guarantees transactional update across multiple statistics.