[prev in list] [next in list] [prev in thread] [next in thread]
List: netbsd-tech-kern
Subject: Unify bpf_mtap & if_ipackets++ on Rx
From: Ryota Ozaki <ozaki-r () netbsd ! org>
Date: 2016-12-07 7:57:14
Message-ID: CAKrYomhqxUF9LxCis9Ovo5vfDWX-PwTwcUVhbWNV5vD=Y1fnvA () mail ! gmail ! com
[Download RAW message or body]
Hi,
This is another proposal that unifies bpf_mtap and
if_ipackets++, which are executed in each driver now,
into the percpuq if_input framework.
The benefits of the change are:
- We can reduce codes
- We can provide the same behavior between drivers
- How if_ipackets is counted up
- Well, actually some drivers periodically update
packet statistics though
- We can run bpf_mtap in softint
- This makes it easy to MP-ify bpf
Here is a patch:
http://www.netbsd.org/~ozaki-r/unify-bpf_mtap-if_ipackets.diff
The patch is almost mechanically generated by spatch.
Let me know if there are mistakes.
We can move most bpf_mtap into softint by the patch
but there remain some bpf_mtap that can run in
hardware interrupt context.
Two of them that are executed from Tx interrupt and can be
moved if_start which is the usual place for bpf_mtap on Tx.
Here is a patch for the change:
http://www.netbsd.org/~ozaki-r/move-bpf_mtap-txintr.diff
Is this kind of changes correct?
So there are five remaining bpf_mtap that cannot be solved
without big changes. I annotate them:
http://www.netbsd.org/~ozaki-r/comment-bpf_mtap-hardintr.diff
One solution is to provide a deferred bpf_mtap mechanism that
duplicates mbuf and run bpf_mtap in softint (or workqueue).
It should work but it's perhaps a last resort.
Let me know if there is a better approach.
Any comments or suggestions?
Thanks,
ozaki-r
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic