TODO.smpnet revision 1.2
1$NetBSD: TODO.smpnet,v 1.2 2017/02/10 03:59:02 ozaki-r Exp $
2
3MP-safe components
4==================
5
6 - bridge(4)
7 - bpf(4)
8 - gif(4)
9 - npf(7)
10 - pfil(9)
11 - pppoe(4)
12   - if_spppsubr.c
13 - tun(4)
14 - vioif(4)
15 - vmx(4)
16 - wm(4)
17
18 - Layer 2 (only Ethernet)
19   - if_ethersubr.c
20 - Most Layer 3
21
22Non MP-safe components and kernel options
23=========================================
24
25 - agr(4)
26 - altq(4)
27 - carp(4)
28 - etherip(4)
29 - faith(4)
30 - gre(4)
31 - ieee80211(4)
32 - ipf(4)
33 - ipsec(4)
34 - kttcp(4)
35 - mpls(4)
36 - opencrypto(9)
37 - pf(4)
38 - ppp(4)
39 - sl(4)
40 - stf(4)
41 - strip(4)
42 - if_srt
43 - tap(4)
44 - vlan(4)
45
46 - netsmb
47 - netnatm
48 - netisbn
49 - netatalk
50 - netbt
51 - netkey
52
53 - if_arcsubr.c
54 - if_atmsubr.c
55 - if_ecosubr.c
56 - if_fddisubr.c
57 - if_hippisubr.c
58 - if_ieee1394subr.c
59 - if_tokensubr.c
60
61 - DCCP
62 - IGMP
63 - IPSELSRC
64 - MROUTING
65 - NFS
66 - PIM
67 - SCTP
68 - TCP
69 - UDP
70
71 - Layer 4
72 - IP multicast
73 - Most network device drivers
74
75Know issues
76===========
77
78bpf
79---
80
81MP-ification of bpf requires all of bpf_mtap* are called in normal LWP context
82or softint context, i.e., not in hardware interrupt context.  For Tx, all
83bpf_mtap satisfy the requrement.  For Rx, most of bpf_mtap are called in softint.
84Unfortunately some bpf_mtap on Rx are still called in hardware interrupt context.
85
86This is the list of the functions that have such bpf_mtap:
87
88 - sca_frame_process() @ sys/dev/ic/hd64570.c
89 - en_intr() @ sys/dev/ic/midway.c
90 - rxintr_cleanup() and txintr_cleanup() @ sys/dev/pci/if_lmc.c
91 - ipr_rx_data_rdy() @ sys/netisdn/i4b_ipr.c
92
93Ideally we should make the functions run in softint somehow, but we don't have
94actual devices, no time (or interest/love) to work on the task, so instead we
95provide a deferred bpf_mtap mechanism that forcibly runs bpf_mtap in softint
96context.  It's a workaround and once the functions run in softint, we should use
97the original bpf_mtap again.
98