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