Skip to content

Commit f0ff8e8

Browse files
author
Saeed Mahameed
committed
net/mlx5e: Convert stats groups array to array of group pointers
Convert stats groups array to array of "stats group" pointers to allow sharing and individual selection of groups per profile as illustrated in the next patches. Signed-off-by: Saeed Mahameed <[email protected]> Reviewed-by: Tariq Toukan <[email protected]>
1 parent 96b1279 commit f0ff8e8

File tree

4 files changed

+56
-31
lines changed

4 files changed

+56
-31
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -893,7 +893,7 @@ struct mlx5e_profile {
893893
void (*update_stats)(struct mlx5e_priv *priv);
894894
void (*update_carrier)(struct mlx5e_priv *priv);
895895
unsigned int (*stats_grps_num)(struct mlx5e_priv *priv);
896-
const struct mlx5e_stats_grp *stats_grps;
896+
mlx5e_stats_grp_t *stats_grps;
897897
struct {
898898
mlx5e_fp_handle_rx_cqe handle_rx_cqe;
899899
mlx5e_fp_handle_rx_cqe handle_rx_cqe_mpwqe;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ void mlx5e_update_ndo_stats(struct mlx5e_priv *priv)
164164
int i;
165165

166166
for (i = mlx5e_nic_stats_grps_num(priv) - 1; i >= 0; i--)
167-
if (mlx5e_nic_stats_grps[i].update_stats_mask &
167+
if (mlx5e_nic_stats_grps[i]->update_stats_mask &
168168
MLX5E_NDO_UPDATE_STATS)
169-
mlx5e_nic_stats_grps[i].update_stats(priv);
169+
mlx5e_nic_stats_grps[i]->update_stats(priv);
170170
}
171171

172172
static void mlx5e_update_stats_work(struct work_struct *work)

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

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -43,46 +43,46 @@ static unsigned int stats_grps_num(struct mlx5e_priv *priv)
4343

4444
unsigned int mlx5e_stats_total_num(struct mlx5e_priv *priv)
4545
{
46-
const struct mlx5e_stats_grp *stats_grps = priv->profile->stats_grps;
46+
mlx5e_stats_grp_t *stats_grps = priv->profile->stats_grps;
4747
const unsigned int num_stats_grps = stats_grps_num(priv);
4848
unsigned int total = 0;
4949
int i;
5050

5151
for (i = 0; i < num_stats_grps; i++)
52-
total += stats_grps[i].get_num_stats(priv);
52+
total += stats_grps[i]->get_num_stats(priv);
5353

5454
return total;
5555
}
5656

5757
void mlx5e_stats_update(struct mlx5e_priv *priv)
5858
{
59-
const struct mlx5e_stats_grp *stats_grps = priv->profile->stats_grps;
59+
mlx5e_stats_grp_t *stats_grps = priv->profile->stats_grps;
6060
const unsigned int num_stats_grps = stats_grps_num(priv);
6161
int i;
6262

6363
for (i = num_stats_grps - 1; i >= 0; i--)
64-
if (stats_grps[i].update_stats)
65-
stats_grps[i].update_stats(priv);
64+
if (stats_grps[i]->update_stats)
65+
stats_grps[i]->update_stats(priv);
6666
}
6767

6868
void mlx5e_stats_fill(struct mlx5e_priv *priv, u64 *data, int idx)
6969
{
70-
const struct mlx5e_stats_grp *stats_grps = priv->profile->stats_grps;
70+
mlx5e_stats_grp_t *stats_grps = priv->profile->stats_grps;
7171
const unsigned int num_stats_grps = stats_grps_num(priv);
7272
int i;
7373

7474
for (i = 0; i < num_stats_grps; i++)
75-
idx = stats_grps[i].fill_stats(priv, data, idx);
75+
idx = stats_grps[i]->fill_stats(priv, data, idx);
7676
}
7777

7878
void mlx5e_stats_fill_strings(struct mlx5e_priv *priv, u8 *data)
7979
{
80-
const struct mlx5e_stats_grp *stats_grps = priv->profile->stats_grps;
80+
mlx5e_stats_grp_t *stats_grps = priv->profile->stats_grps;
8181
const unsigned int num_stats_grps = stats_grps_num(priv);
8282
int i, idx = 0;
8383

8484
for (i = 0; i < num_stats_grps; i++)
85-
idx = stats_grps[i].fill_strings(priv, data, idx);
85+
idx = stats_grps[i]->fill_strings(priv, data, idx);
8686
}
8787

8888
/* Concrete NIC Stats */
@@ -1700,24 +1700,41 @@ static MLX5E_DECLARE_STATS_GRP_OP_FILL_STATS(channels)
17001700

17011701
static MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(channels) { return; }
17021702

1703+
static MLX5E_DEFINE_STATS_GRP(sw, 0);
1704+
static MLX5E_DEFINE_STATS_GRP(qcnt, MLX5E_NDO_UPDATE_STATS);
1705+
static MLX5E_DEFINE_STATS_GRP(vnic_env, 0);
1706+
static MLX5E_DEFINE_STATS_GRP(vport, MLX5E_NDO_UPDATE_STATS);
1707+
static MLX5E_DEFINE_STATS_GRP(802_3, MLX5E_NDO_UPDATE_STATS);
1708+
static MLX5E_DEFINE_STATS_GRP(2863, 0);
1709+
static MLX5E_DEFINE_STATS_GRP(2819, 0);
1710+
static MLX5E_DEFINE_STATS_GRP(phy, 0);
1711+
static MLX5E_DEFINE_STATS_GRP(pcie, 0);
1712+
static MLX5E_DEFINE_STATS_GRP(per_prio, 0);
1713+
static MLX5E_DEFINE_STATS_GRP(pme, 0);
1714+
static MLX5E_DEFINE_STATS_GRP(channels, 0);
1715+
static MLX5E_DEFINE_STATS_GRP(per_port_buff_congest, 0);
1716+
static MLX5E_DEFINE_STATS_GRP(eth_ext, 0);
1717+
static MLX5E_DEFINE_STATS_GRP(ipsec, 0);
1718+
static MLX5E_DEFINE_STATS_GRP(tls, 0);
1719+
17031720
/* The stats groups order is opposite to the update_stats() order calls */
1704-
const struct mlx5e_stats_grp mlx5e_nic_stats_grps[] = {
1705-
MLX5E_DEFINE_STATS_GRP(sw, 0),
1706-
MLX5E_DEFINE_STATS_GRP(qcnt, MLX5E_NDO_UPDATE_STATS),
1707-
MLX5E_DEFINE_STATS_GRP(vnic_env, 0),
1708-
MLX5E_DEFINE_STATS_GRP(vport, MLX5E_NDO_UPDATE_STATS),
1709-
MLX5E_DEFINE_STATS_GRP(802_3, MLX5E_NDO_UPDATE_STATS),
1710-
MLX5E_DEFINE_STATS_GRP(2863, 0),
1711-
MLX5E_DEFINE_STATS_GRP(2819, 0),
1712-
MLX5E_DEFINE_STATS_GRP(phy, 0),
1713-
MLX5E_DEFINE_STATS_GRP(eth_ext, 0),
1714-
MLX5E_DEFINE_STATS_GRP(pcie, 0),
1715-
MLX5E_DEFINE_STATS_GRP(per_prio, 0),
1716-
MLX5E_DEFINE_STATS_GRP(pme, 0),
1717-
MLX5E_DEFINE_STATS_GRP(ipsec, 0),
1718-
MLX5E_DEFINE_STATS_GRP(tls, 0),
1719-
MLX5E_DEFINE_STATS_GRP(channels, 0),
1720-
MLX5E_DEFINE_STATS_GRP(per_port_buff_congest, 0),
1721+
mlx5e_stats_grp_t mlx5e_nic_stats_grps[] = {
1722+
&MLX5E_STATS_GRP(sw),
1723+
&MLX5E_STATS_GRP(qcnt),
1724+
&MLX5E_STATS_GRP(vnic_env),
1725+
&MLX5E_STATS_GRP(vport),
1726+
&MLX5E_STATS_GRP(802_3),
1727+
&MLX5E_STATS_GRP(2863),
1728+
&MLX5E_STATS_GRP(2819),
1729+
&MLX5E_STATS_GRP(phy),
1730+
&MLX5E_STATS_GRP(eth_ext),
1731+
&MLX5E_STATS_GRP(pcie),
1732+
&MLX5E_STATS_GRP(per_prio),
1733+
&MLX5E_STATS_GRP(pme),
1734+
&MLX5E_STATS_GRP(ipsec),
1735+
&MLX5E_STATS_GRP(tls),
1736+
&MLX5E_STATS_GRP(channels),
1737+
&MLX5E_STATS_GRP(per_port_buff_congest),
17211738
};
17221739

17231740
unsigned int mlx5e_nic_stats_grps_num(struct mlx5e_priv *priv)

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ struct mlx5e_stats_grp {
6969
void (*update_stats)(struct mlx5e_priv *priv);
7070
};
7171

72+
typedef const struct mlx5e_stats_grp *const mlx5e_stats_grp_t;
73+
7274
#define MLX5E_STATS_GRP_OP(grp, name) mlx5e_stats_grp_ ## grp ## _ ## name
7375

7476
#define MLX5E_DECLARE_STATS_GRP_OP_NUM_STATS(grp) \
@@ -83,7 +85,13 @@ struct mlx5e_stats_grp {
8385
#define MLX5E_DECLARE_STATS_GRP_OP_FILL_STATS(grp) \
8486
int MLX5E_STATS_GRP_OP(grp, fill_stats)(struct mlx5e_priv *priv, u64 *data, int idx)
8587

86-
#define MLX5E_DEFINE_STATS_GRP(grp, mask) { \
88+
#define MLX5E_STATS_GRP(grp) mlx5e_stats_grp_ ## grp
89+
90+
#define MLX5E_DECLARE_STATS_GRP(grp) \
91+
const struct mlx5e_stats_grp MLX5E_STATS_GRP(grp)
92+
93+
#define MLX5E_DEFINE_STATS_GRP(grp, mask) \
94+
MLX5E_DECLARE_STATS_GRP(grp) = { \
8795
.get_num_stats = MLX5E_STATS_GRP_OP(grp, num_stats), \
8896
.fill_stats = MLX5E_STATS_GRP_OP(grp, fill_stats), \
8997
.fill_strings = MLX5E_STATS_GRP_OP(grp, fill_strings), \
@@ -365,7 +373,7 @@ struct mlx5e_stats {
365373
struct mlx5e_pcie_stats pcie;
366374
};
367375

368-
extern const struct mlx5e_stats_grp mlx5e_nic_stats_grps[];
376+
extern mlx5e_stats_grp_t mlx5e_nic_stats_grps[];
369377
unsigned int mlx5e_nic_stats_grps_num(struct mlx5e_priv *priv);
370378

371379
MLX5E_DECLARE_STATS_GRP_OP_UPDATE_STATS(802_3);

0 commit comments

Comments
 (0)