TODO.smpnet revision 1.9
11.9Smsaitoh$NetBSD: TODO.smpnet,v 1.9 2017/03/11 07:23:13 msaitoh Exp $
21.1Sozaki
31.2SozakiMP-safe components
41.2Sozaki==================
51.1Sozaki
61.7Sozaki - Device drivers
71.7Sozaki   - vioif(4)
81.7Sozaki   - vmx(4)
91.7Sozaki   - wm(4)
101.8Sozaki   - ixg(4)
111.9Smsaitoh   - ixv(4)
121.7Sozaki - Layer 2
131.7Sozaki   - Ethernet (if_ethersubr.c)
141.7Sozaki   - bridge(4)
151.7Sozaki     - STP
161.7Sozaki   - Fast forward (ipflow)
171.7Sozaki - Layer 3
181.7Sozaki   - All except for items in the below section
191.7Sozaki - Interfaces
201.7Sozaki   - gif(4)
211.7Sozaki   - l2tp(4)
221.7Sozaki   - pppoe(4)
231.7Sozaki     - if_spppsubr.c
241.7Sozaki   - tun(4)
251.7Sozaki - Packet filters
261.7Sozaki   - npf(7)
271.7Sozaki - Others
281.7Sozaki   - bpf(4)
291.7Sozaki   - pfil(9)
301.2Sozaki
311.2SozakiNon MP-safe components and kernel options
321.2Sozaki=========================================
331.2Sozaki
341.7Sozaki - Device drivers
351.7Sozaki   - Most drivers other than ones listed in the above section
361.6Sozaki - Layer 2
371.6Sozaki   - ARCNET (if_arcsubr.c)
381.6Sozaki   - ATM (if_atmsubr.c)
391.6Sozaki   - BRIDGE_IPF
401.6Sozaki   - if_ecosubr.c
411.6Sozaki   - FDDI (if_fddisubr.c)
421.6Sozaki   - HIPPI (if_hippisubr.c)
431.6Sozaki   - IEEE 1394 (if_ieee1394subr.c)
441.6Sozaki   - IEEE 802.11 (ieee80211(4))
451.6Sozaki   - Token ring (if_tokensubr.c)
461.6Sozaki - Layer 3
471.6Sozaki   - IPSELSRC
481.6Sozaki   - MROUTING
491.6Sozaki   - PIM
501.6Sozaki   - MPLS (mpls(4))
511.2Sozaki - Layer 4
521.6Sozaki   - DCCP
531.6Sozaki   - SCTP
541.6Sozaki   - TCP
551.6Sozaki   - UDP
561.6Sozaki - Interfaces
571.6Sozaki   - agr(4)
581.6Sozaki   - carp(4)
591.6Sozaki   - etherip(4)
601.6Sozaki   - faith(4)
611.6Sozaki   - gre(4)
621.6Sozaki   - ppp(4)
631.6Sozaki   - sl(4)
641.6Sozaki   - stf(4)
651.6Sozaki   - strip(4)
661.6Sozaki   - if_srt
671.6Sozaki   - tap(4)
681.6Sozaki   - vlan(4)
691.6Sozaki - Packet filters
701.6Sozaki   - ipf(4)
711.6Sozaki   - pf(4)
721.6Sozaki - Others
731.6Sozaki   - AppleTalk (sys/netatalk/)
741.6Sozaki   - ATM (sys/netnatm/)
751.6Sozaki   - Bluetooth (sys/netbt/)
761.6Sozaki   - altq(4)
771.6Sozaki   - CIFS (sys/netsmb/)
781.6Sozaki   - ipsec(4)
791.6Sozaki   - ISDN (sys/netisbn/)
801.6Sozaki   - kttcp(4)
811.6Sozaki   - NFS
821.6Sozaki   - opencrypto(9)
831.2Sozaki
841.2SozakiKnow issues
851.2Sozaki===========
861.1Sozaki
871.1Sozakibpf
881.2Sozaki---
891.1Sozaki
901.1SozakiMP-ification of bpf requires all of bpf_mtap* are called in normal LWP context
911.1Sozakior softint context, i.e., not in hardware interrupt context.  For Tx, all
921.1Sozakibpf_mtap satisfy the requrement.  For Rx, most of bpf_mtap are called in softint.
931.1SozakiUnfortunately some bpf_mtap on Rx are still called in hardware interrupt context.
941.1Sozaki
951.1SozakiThis is the list of the functions that have such bpf_mtap:
961.1Sozaki
971.1Sozaki - sca_frame_process() @ sys/dev/ic/hd64570.c
981.1Sozaki - en_intr() @ sys/dev/ic/midway.c
991.1Sozaki - rxintr_cleanup() and txintr_cleanup() @ sys/dev/pci/if_lmc.c
1001.1Sozaki - ipr_rx_data_rdy() @ sys/netisdn/i4b_ipr.c
1011.1Sozaki
1021.1SozakiIdeally we should make the functions run in softint somehow, but we don't have
1031.1Sozakiactual devices, no time (or interest/love) to work on the task, so instead we
1041.1Sozakiprovide a deferred bpf_mtap mechanism that forcibly runs bpf_mtap in softint
1051.1Sozakicontext.  It's a workaround and once the functions run in softint, we should use
1061.1Sozakithe original bpf_mtap again.
107