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