On 01/17/2019 05:14 PM, Cong Wang wrote:
> Similar to u32 filter, it is useful to know how many times
> we reach each basic filter and how many times we pass the
> ematch attached to it.
>
> Sample output:
>
> filter protocol arp pref 49152 basic chain 0
> filter protocol arp pref 49152 basic chain 0 handle 0x1 (rule hit 3 success
> 3)
> action order 1: gact action pass
> random type none pass val 0
> index 1 ref 1 bind 1 installed 81 sec used 4 sec
> Action statistics:
> Sent 126 bytes 3 pkt (dropped 0, overlimits 0 requeues 0)
> backlog 0b 0p requeues 0
...
> + for_each_possible_cpu(cpu) {
> + struct tc_basic_pcnt *pf = per_cpu_ptr(f->pf, cpu);
> +
> + gpf.rcnt += pf->rcnt;
> + gpf.rhit += pf->rhit;
> + }
>
This looks missing some synchronization of some sort for 32bit kernels ?