mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 15:05:24 +07:00
mlxsw: spectrum_acl: Ask device for rule stats only if counter was created
Set a flag in case rule counter was created. Only query the device for stats of a rule, which has the valid counter assigned. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4885547951
commit
f16e7f64e4
@ -641,7 +641,8 @@ struct mlxsw_sp_acl_rule_info {
|
||||
struct mlxsw_afa_block *act_block;
|
||||
u8 action_created:1,
|
||||
ingress_bind_blocker:1,
|
||||
egress_bind_blocker:1;
|
||||
egress_bind_blocker:1,
|
||||
counter_valid:1;
|
||||
unsigned int counter_index;
|
||||
};
|
||||
|
||||
|
@ -642,8 +642,14 @@ int mlxsw_sp_acl_rulei_act_count(struct mlxsw_sp *mlxsw_sp,
|
||||
struct mlxsw_sp_acl_rule_info *rulei,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
return mlxsw_afa_block_append_counter(rulei->act_block,
|
||||
&rulei->counter_index, extack);
|
||||
int err;
|
||||
|
||||
err = mlxsw_afa_block_append_counter(rulei->act_block,
|
||||
&rulei->counter_index, extack);
|
||||
if (err)
|
||||
return err;
|
||||
rulei->counter_valid = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mlxsw_sp_acl_rulei_act_fid_set(struct mlxsw_sp *mlxsw_sp,
|
||||
@ -857,16 +863,18 @@ int mlxsw_sp_acl_rule_get_stats(struct mlxsw_sp *mlxsw_sp,
|
||||
|
||||
{
|
||||
struct mlxsw_sp_acl_rule_info *rulei;
|
||||
u64 current_packets;
|
||||
u64 current_bytes;
|
||||
u64 current_packets = 0;
|
||||
u64 current_bytes = 0;
|
||||
int err;
|
||||
|
||||
rulei = mlxsw_sp_acl_rule_rulei(rule);
|
||||
err = mlxsw_sp_flow_counter_get(mlxsw_sp, rulei->counter_index,
|
||||
¤t_packets, ¤t_bytes);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (rulei->counter_valid) {
|
||||
err = mlxsw_sp_flow_counter_get(mlxsw_sp, rulei->counter_index,
|
||||
¤t_packets,
|
||||
¤t_bytes);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
*packets = current_packets - rule->last_packets;
|
||||
*bytes = current_bytes - rule->last_bytes;
|
||||
*last_use = rule->last_used;
|
||||
|
Loading…
Reference in New Issue
Block a user