98 lines
1.8 KiB
Plaintext
98 lines
1.8 KiB
Plaintext
$NetBSD: TODO.smpnet,v 1.2 2017/02/10 03:59:02 ozaki-r Exp $
|
|
|
|
MP-safe components
|
|
==================
|
|
|
|
- bridge(4)
|
|
- bpf(4)
|
|
- gif(4)
|
|
- npf(7)
|
|
- pfil(9)
|
|
- pppoe(4)
|
|
- if_spppsubr.c
|
|
- tun(4)
|
|
- vioif(4)
|
|
- vmx(4)
|
|
- wm(4)
|
|
|
|
- Layer 2 (only Ethernet)
|
|
- if_ethersubr.c
|
|
- Most Layer 3
|
|
|
|
Non MP-safe components and kernel options
|
|
=========================================
|
|
|
|
- agr(4)
|
|
- altq(4)
|
|
- carp(4)
|
|
- etherip(4)
|
|
- faith(4)
|
|
- gre(4)
|
|
- ieee80211(4)
|
|
- ipf(4)
|
|
- ipsec(4)
|
|
- kttcp(4)
|
|
- mpls(4)
|
|
- opencrypto(9)
|
|
- pf(4)
|
|
- ppp(4)
|
|
- sl(4)
|
|
- stf(4)
|
|
- strip(4)
|
|
- if_srt
|
|
- tap(4)
|
|
- vlan(4)
|
|
|
|
- netsmb
|
|
- netnatm
|
|
- netisbn
|
|
- netatalk
|
|
- netbt
|
|
- netkey
|
|
|
|
- if_arcsubr.c
|
|
- if_atmsubr.c
|
|
- if_ecosubr.c
|
|
- if_fddisubr.c
|
|
- if_hippisubr.c
|
|
- if_ieee1394subr.c
|
|
- if_tokensubr.c
|
|
|
|
- DCCP
|
|
- IGMP
|
|
- IPSELSRC
|
|
- MROUTING
|
|
- NFS
|
|
- PIM
|
|
- SCTP
|
|
- TCP
|
|
- UDP
|
|
|
|
- Layer 4
|
|
- IP multicast
|
|
- Most network device drivers
|
|
|
|
Know issues
|
|
===========
|
|
|
|
bpf
|
|
---
|
|
|
|
MP-ification of bpf requires all of bpf_mtap* are called in normal LWP context
|
|
or softint context, i.e., not in hardware interrupt context. For Tx, all
|
|
bpf_mtap satisfy the requrement. For Rx, most of bpf_mtap are called in softint.
|
|
Unfortunately some bpf_mtap on Rx are still called in hardware interrupt context.
|
|
|
|
This is the list of the functions that have such bpf_mtap:
|
|
|
|
- sca_frame_process() @ sys/dev/ic/hd64570.c
|
|
- en_intr() @ sys/dev/ic/midway.c
|
|
- rxintr_cleanup() and txintr_cleanup() @ sys/dev/pci/if_lmc.c
|
|
- ipr_rx_data_rdy() @ sys/netisdn/i4b_ipr.c
|
|
|
|
Ideally we should make the functions run in softint somehow, but we don't have
|
|
actual devices, no time (or interest/love) to work on the task, so instead we
|
|
provide a deferred bpf_mtap mechanism that forcibly runs bpf_mtap in softint
|
|
context. It's a workaround and once the functions run in softint, we should use
|
|
the original bpf_mtap again.
|