mlxsw: spectrum_qdisc: Add mlxsw_sp_qdisc_get_class_stats()
Add a wrapper around mlxsw_sp_qdisc_collect_tc_stats() and mlxsw_sp_qdisc_update_stats() for the simple case of doing both in one go: mlxsw_sp_qdisc_get_class_stats(). Dispatch to that function from mlxsw_sp_qdisc_get_red_stats(). This new function will be useful for other leaf Qdiscs as well. Signed-off-by: Petr Machata <petrm@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cf9af379cd
commit
3d0d592193
|
@ -273,6 +273,24 @@ mlxsw_sp_qdisc_update_stats(struct mlxsw_sp *mlxsw_sp,
|
||||||
stats_base->tx_packets += tx_packets;
|
stats_base->tx_packets += tx_packets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
mlxsw_sp_qdisc_get_tc_stats(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||||
|
struct mlxsw_sp_qdisc *mlxsw_sp_qdisc,
|
||||||
|
struct tc_qopt_offload_stats *stats_ptr)
|
||||||
|
{
|
||||||
|
u64 tx_packets = 0;
|
||||||
|
u64 tx_bytes = 0;
|
||||||
|
u64 backlog = 0;
|
||||||
|
u64 drops = 0;
|
||||||
|
|
||||||
|
mlxsw_sp_qdisc_collect_tc_stats(mlxsw_sp_port, mlxsw_sp_qdisc,
|
||||||
|
&tx_bytes, &tx_packets,
|
||||||
|
&drops, &backlog);
|
||||||
|
mlxsw_sp_qdisc_update_stats(mlxsw_sp_port->mlxsw_sp, mlxsw_sp_qdisc,
|
||||||
|
tx_bytes, tx_packets, drops, backlog,
|
||||||
|
stats_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
mlxsw_sp_tclass_congestion_enable(struct mlxsw_sp_port *mlxsw_sp_port,
|
mlxsw_sp_tclass_congestion_enable(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||||
int tclass_num, u32 min, u32 max,
|
int tclass_num, u32 min, u32 max,
|
||||||
|
@ -452,24 +470,15 @@ mlxsw_sp_qdisc_get_red_stats(struct mlxsw_sp_port *mlxsw_sp_port,
|
||||||
u8 tclass_num = mlxsw_sp_qdisc->tclass_num;
|
u8 tclass_num = mlxsw_sp_qdisc->tclass_num;
|
||||||
struct mlxsw_sp_qdisc_stats *stats_base;
|
struct mlxsw_sp_qdisc_stats *stats_base;
|
||||||
struct mlxsw_sp_port_xstats *xstats;
|
struct mlxsw_sp_port_xstats *xstats;
|
||||||
u64 tx_packets = 0;
|
|
||||||
u64 tx_bytes = 0;
|
|
||||||
u64 backlog = 0;
|
|
||||||
u64 overlimits;
|
u64 overlimits;
|
||||||
u64 drops = 0;
|
|
||||||
|
|
||||||
xstats = &mlxsw_sp_port->periodic_hw_stats.xstats;
|
xstats = &mlxsw_sp_port->periodic_hw_stats.xstats;
|
||||||
stats_base = &mlxsw_sp_qdisc->stats_base;
|
stats_base = &mlxsw_sp_qdisc->stats_base;
|
||||||
|
|
||||||
mlxsw_sp_qdisc_collect_tc_stats(mlxsw_sp_port, mlxsw_sp_qdisc,
|
mlxsw_sp_qdisc_get_tc_stats(mlxsw_sp_port, mlxsw_sp_qdisc, stats_ptr);
|
||||||
&tx_bytes, &tx_packets,
|
|
||||||
&drops, &backlog);
|
|
||||||
overlimits = xstats->wred_drop[tclass_num] + xstats->ecn -
|
overlimits = xstats->wred_drop[tclass_num] + xstats->ecn -
|
||||||
stats_base->overlimits;
|
stats_base->overlimits;
|
||||||
|
|
||||||
mlxsw_sp_qdisc_update_stats(mlxsw_sp_port->mlxsw_sp, mlxsw_sp_qdisc,
|
|
||||||
tx_bytes, tx_packets, drops, backlog,
|
|
||||||
stats_ptr);
|
|
||||||
stats_ptr->qstats->overlimits += overlimits;
|
stats_ptr->qstats->overlimits += overlimits;
|
||||||
stats_base->overlimits += overlimits;
|
stats_base->overlimits += overlimits;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue