Skip to content

Commit 9bbc8be

Browse files
committed
Merge tag 'mlx5-updates-2020-01-22' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
Saeed Mahameed says: ==================== mlx5-updates-2020-01-22 This series provides updates to mlx5 driver. 1) Misc small cleanups 2) Some SW steering updates including header copy support 3) Full ethtool statistics support for E-Switch uplink representor Some refactoring was required to share the bare-metal NIC ethtool stats with the Uplink representor. On Top of this Vlad converts the ethtool stats support in E-Swtich vports representors to use the mlx5e "stats groups" infrastructure and then applied all applicable stats to the uplink representor netdev. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents 790e011 + 7c45352 commit 9bbc8be

File tree

12 files changed

+805
-398
lines changed

12 files changed

+805
-398
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,8 @@ struct mlx5e_profile {
892892
int (*update_rx)(struct mlx5e_priv *priv);
893893
void (*update_stats)(struct mlx5e_priv *priv);
894894
void (*update_carrier)(struct mlx5e_priv *priv);
895+
unsigned int (*stats_grps_num)(struct mlx5e_priv *priv);
896+
mlx5e_stats_grp_t *stats_grps;
895897
struct {
896898
mlx5e_fp_handle_rx_cqe handle_rx_cqe;
897899
mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe;
@@ -964,7 +966,6 @@ struct sk_buff *
964966
mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
965967
struct mlx5e_wqe_frag_info *wi, u32 cqe_bcnt);
966968

967-
void mlx5e_update_stats(struct mlx5e_priv *priv);
968969
void mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats);
969970
void mlx5e_fold_sw_stats64(struct mlx5e_priv *priv, struct rtnl_link_stats64 *s);
970971

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

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,9 @@ static const struct pflag_desc mlx5e_priv_flags[MLX5E_NUM_PFLAGS];
218218

219219
int mlx5e_ethtool_get_sset_count(struct mlx5e_priv *priv, int sset)
220220
{
221-
int i, num_stats = 0;
222-
223221
switch (sset) {
224222
case ETH_SS_STATS:
225-
for (i = 0; i < mlx5e_num_stats_grps; i++)
226-
num_stats += mlx5e_stats_grps[i].get_num_stats(priv);
227-
return num_stats;
223+
return mlx5e_stats_total_num(priv);
228224
case ETH_SS_PRIV_FLAGS:
229225
return MLX5E_NUM_PFLAGS;
230226
case ETH_SS_TEST:
@@ -242,14 +238,6 @@ static int mlx5e_get_sset_count(struct net_device *dev, int sset)
242238
return mlx5e_ethtool_get_sset_count(priv, sset);
243239
}
244240

245-
static void mlx5e_fill_stats_strings(struct mlx5e_priv *priv, u8 *data)
246-
{
247-
int i, idx = 0;
248-
249-
for (i = 0; i < mlx5e_num_stats_grps; i++)
250-
idx = mlx5e_stats_grps[i].fill_strings(priv, data, idx);
251-
}
252-
253241
void mlx5e_ethtool_get_strings(struct mlx5e_priv *priv, u32 stringset, u8 *data)
254242
{
255243
int i;
@@ -268,7 +256,7 @@ void mlx5e_ethtool_get_strings(struct mlx5e_priv *priv, u32 stringset, u8 *data)
268256
break;
269257

270258
case ETH_SS_STATS:
271-
mlx5e_fill_stats_strings(priv, data);
259+
mlx5e_stats_fill_strings(priv, data);
272260
break;
273261
}
274262
}
@@ -283,14 +271,13 @@ static void mlx5e_get_strings(struct net_device *dev, u32 stringset, u8 *data)
283271
void mlx5e_ethtool_get_ethtool_stats(struct mlx5e_priv *priv,
284272
struct ethtool_stats *stats, u64 *data)
285273
{
286-
int i, idx = 0;
274+
int idx = 0;
287275

288276
mutex_lock(&priv->state_lock);
289-
mlx5e_update_stats(priv);
277+
mlx5e_stats_update(priv);
290278
mutex_unlock(&priv->state_lock);
291279

292-
for (i = 0; i < mlx5e_num_stats_grps; i++)
293-
idx = mlx5e_stats_grps[i].fill_stats(priv, data, idx);
280+
mlx5e_stats_fill(priv, data, idx);
294281
}
295282

296283
static void mlx5e_get_ethtool_stats(struct net_device *dev,

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

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -159,23 +159,14 @@ static void mlx5e_update_carrier_work(struct work_struct *work)
159159
mutex_unlock(&priv->state_lock);
160160
}
161161

162-
void mlx5e_update_stats(struct mlx5e_priv *priv)
163-
{
164-
int i;
165-
166-
for (i = mlx5e_num_stats_grps - 1; i >= 0; i--)
167-
if (mlx5e_stats_grps[i].update_stats)
168-
mlx5e_stats_grps[i].update_stats(priv);
169-
}
170-
171162
void mlx5e_update_ndo_stats(struct mlx5e_priv *priv)
172163
{
173164
int i;
174165

175-
for (i = mlx5e_num_stats_grps - 1; i >= 0; i--)
176-
if (mlx5e_stats_grps[i].update_stats_mask &
166+
for (i = mlx5e_nic_stats_grps_num(priv) - 1; i >= 0; i--)
167+
if (mlx5e_nic_stats_grps[i]->update_stats_mask &
177168
MLX5E_NDO_UPDATE_STATS)
178-
mlx5e_stats_grps[i].update_stats(priv);
169+
mlx5e_nic_stats_grps[i]->update_stats(priv);
179170
}
180171

181172
static void mlx5e_update_stats_work(struct work_struct *work)
@@ -4878,6 +4869,8 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev)
48784869
netdev->hw_enc_features |= NETIF_F_GSO_UDP_TUNNEL |
48794870
NETIF_F_GSO_UDP_TUNNEL_CSUM;
48804871
netdev->gso_partial_features = NETIF_F_GSO_UDP_TUNNEL_CSUM;
4872+
netdev->vlan_features |= NETIF_F_GSO_UDP_TUNNEL |
4873+
NETIF_F_GSO_UDP_TUNNEL_CSUM;
48814874
}
48824875

48834876
if (mlx5e_tunnel_proto_supported(mdev, IPPROTO_GRE)) {
@@ -5195,6 +5188,8 @@ static const struct mlx5e_profile mlx5e_nic_profile = {
51955188
.rx_handlers.handle_rx_cqe_mpwqe = mlx5e_handle_rx_cqe_mpwrq,
51965189
.max_tc = MLX5E_MAX_NUM_TC,
51975190
.rq_groups = MLX5E_NUM_RQ_GROUPS(XSK),
5191+
.stats_grps = mlx5e_nic_stats_grps,
5192+
.stats_grps_num = mlx5e_nic_stats_grps_num,
51985193
};
51995194

52005195
/* mlx5e generic netdev management API (move to en_common.c) */

0 commit comments

Comments
 (0)