Andrey V. Elsukov 699281b545 Rework locking in BPF code to remove rwlock from fast path.
On high packets rate the contention on rwlock in bpf_*tap*() functions
can lead to packets dropping. To avoid this, migrate this code to use
epoch(9) KPI and ConcurrencyKit's lists.

* all lists changed to use CK_LIST;
* reference counting added to bpf_if and bpf_d;
* now bpf_if references ifnet and releases this reference on destroy;
* each bpf_d descriptor references bpf_if when it is attached;
* new struct bpf_program_buffer introduced to keep BPF filter programs;
* bpf_program_buffer, bpf_d and bpf_if structures are freed by
  epoch_call();
* bpf_freelist and ifnet_departure event are no longer needed, thus
  both are removed;

Reviewed by:	melifaro
Sponsored by:	Yandex LLC
Differential Revision:	https://reviews.freebsd.org/D20224
2019-05-13 13:45:28 +00:00
..
2018-05-31 09:11:21 +00:00
2019-04-17 17:18:43 +00:00
2019-04-17 17:18:43 +00:00
2019-03-09 01:12:59 +00:00
2019-05-08 02:32:11 +00:00
2019-05-11 04:18:06 +00:00
2019-04-17 17:18:43 +00:00
2018-11-26 13:42:18 +00:00
2019-05-09 11:34:46 +00:00
2019-03-15 11:08:44 +00:00
2018-06-16 19:21:09 +00:00
2017-07-24 03:59:50 +00:00