OSDN Git Service

netdevsim: Ensure policer drop counter always increases
authorIdo Schimmel <idosch@mellanox.com>
Thu, 21 May 2020 11:46:16 +0000 (14:46 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 May 2020 23:05:42 +0000 (16:05 -0700)
In case the policer drop counter is retrieved when the jiffies value is
a multiple of 64, the counter will not be incremented.

This randomly breaks a selftest [1] the reads the counter twice and
checks that it was incremented:

```
TEST: Trap policer                                                  [FAIL]
Policer drop counter was not incremented
```

Fix by always incrementing the counter by 1.

[1] tools/testing/selftests/drivers/net/netdevsim/devlink_trap.sh

Fixes: ad188458d012 ("netdevsim: Add devlink-trap policer support")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netdevsim/dev.c

index 68668a2..dc3ff0e 100644 (file)
@@ -858,8 +858,7 @@ nsim_dev_devlink_trap_policer_counter_get(struct devlink *devlink,
                return -EINVAL;
 
        cnt = &nsim_dev->trap_data->trap_policers_cnt_arr[policer->id - 1];
-       *p_drops = *cnt;
-       *cnt += jiffies % 64;
+       *p_drops = (*cnt)++;
 
        return 0;
 }