]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / drivers / net / ethernet / mellanox / mlx5 / core / en_ethtool.c
index 5197817e4b2f8a6b24af61b4fb08c271e69d1a5f..6236ce95b8e6dfdbd9c70a11e20136a82a55014e 100644 (file)
@@ -170,7 +170,8 @@ static int mlx5e_get_sset_count(struct net_device *dev, int sset)
        case ETH_SS_STATS:
                return NUM_SW_COUNTERS +
                       MLX5E_NUM_Q_CNTRS(priv) +
-                      NUM_VPORT_COUNTERS + NUM_PPORT_COUNTERS +
+                      NUM_VPORT_COUNTERS + NUM_PPORT_COUNTERS(priv) +
+                      NUM_PCIE_COUNTERS(priv) +
                       MLX5E_NUM_RQ_STATS(priv) +
                       MLX5E_NUM_SQ_STATS(priv) +
                       MLX5E_NUM_PFC_COUNTERS(priv) +
@@ -218,6 +219,14 @@ static void mlx5e_fill_stats_strings(struct mlx5e_priv *priv, uint8_t *data)
                strcpy(data + (idx++) * ETH_GSTRING_LEN,
                       pport_2819_stats_desc[i].format);
 
+       for (i = 0; i < NUM_PPORT_PHY_STATISTICAL_COUNTERS(priv); i++)
+               strcpy(data + (idx++) * ETH_GSTRING_LEN,
+                      pport_phy_statistical_stats_desc[i].format);
+
+       for (i = 0; i < NUM_PCIE_PERF_COUNTERS(priv); i++)
+               strcpy(data + (idx++) * ETH_GSTRING_LEN,
+                      pcie_perf_stats_desc[i].format);
+
        for (prio = 0; prio < NUM_PPORT_PRIO; prio++) {
                for (i = 0; i < NUM_PPORT_PER_PRIO_TRAFFIC_COUNTERS; i++)
                        sprintf(data + (idx++) * ETH_GSTRING_LEN,
@@ -330,6 +339,14 @@ static void mlx5e_get_ethtool_stats(struct net_device *dev,
                data[idx++] = MLX5E_READ_CTR64_BE(&priv->stats.pport.RFC_2819_counters,
                                                  pport_2819_stats_desc, i);
 
+       for (i = 0; i < NUM_PPORT_PHY_STATISTICAL_COUNTERS(priv); i++)
+               data[idx++] = MLX5E_READ_CTR64_BE(&priv->stats.pport.phy_statistical_counters,
+                                                 pport_phy_statistical_stats_desc, i);
+
+       for (i = 0; i < NUM_PCIE_PERF_COUNTERS(priv); i++)
+               data[idx++] = MLX5E_READ_CTR32_BE(&priv->stats.pcie.pcie_perf_counters,
+                                                 pcie_perf_stats_desc, i);
+
        for (prio = 0; prio < NUM_PPORT_PRIO; prio++) {
                for (i = 0; i < NUM_PPORT_PER_PRIO_TRAFFIC_COUNTERS; i++)
                        data[idx++] = MLX5E_READ_CTR64_BE(&priv->stats.pport.per_prio_counters[prio],
@@ -535,7 +552,7 @@ static void mlx5e_get_channels(struct net_device *dev,
 {
        struct mlx5e_priv *priv = netdev_priv(dev);
 
-       ch->max_combined   = mlx5e_get_max_num_channels(priv->mdev);
+       ch->max_combined   = priv->profile->max_nch(priv->mdev);
        ch->combined_count = priv->params.num_channels;
 }
 
@@ -1448,8 +1465,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;
@@ -1459,17 +1474,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,