TODO.smpnet revision 1.6
11.6Sozaki$NetBSD: TODO.smpnet,v 1.6 2017/03/08 07:32:58 ozaki-r Exp $
21.1Sozaki
31.2SozakiMP-safe components
41.2Sozaki==================
51.1Sozaki
61.2Sozaki - bridge(4)
71.6Sozaki   - STP
81.2Sozaki - bpf(4)
91.2Sozaki - gif(4)
101.4Sozaki - l2tp(4)
111.2Sozaki - npf(7)
121.2Sozaki - pfil(9)
131.2Sozaki - pppoe(4)
141.2Sozaki   - if_spppsubr.c
151.2Sozaki - tun(4)
161.2Sozaki - vioif(4)
171.2Sozaki - vmx(4)
181.2Sozaki - wm(4)
191.2Sozaki
201.2Sozaki - Layer 2 (only Ethernet)
211.2Sozaki   - if_ethersubr.c
221.2Sozaki - Most Layer 3
231.2Sozaki
241.2SozakiNon MP-safe components and kernel options
251.2Sozaki=========================================
261.2Sozaki
271.6Sozaki - Most network device drivers
281.6Sozaki - Layer 2
291.6Sozaki   - ARCNET (if_arcsubr.c)
301.6Sozaki   - ATM (if_atmsubr.c)
311.6Sozaki   - BRIDGE_IPF
321.6Sozaki   - if_ecosubr.c
331.6Sozaki   - FDDI (if_fddisubr.c)
341.6Sozaki   - HIPPI (if_hippisubr.c)
351.6Sozaki   - IEEE 1394 (if_ieee1394subr.c)
361.6Sozaki   - IEEE 802.11 (ieee80211(4))
371.6Sozaki   - Token ring (if_tokensubr.c)
381.6Sozaki - Layer 3
391.6Sozaki   - IPSELSRC
401.6Sozaki   - MROUTING
411.6Sozaki   - PIM
421.6Sozaki   - MPLS (mpls(4))
431.2Sozaki - Layer 4
441.6Sozaki   - DCCP
451.6Sozaki   - SCTP
461.6Sozaki   - TCP
471.6Sozaki   - UDP
481.6Sozaki - Interfaces
491.6Sozaki   - agr(4)
501.6Sozaki   - carp(4)
511.6Sozaki   - etherip(4)
521.6Sozaki   - faith(4)
531.6Sozaki   - gre(4)
541.6Sozaki   - ppp(4)
551.6Sozaki   - sl(4)
561.6Sozaki   - stf(4)
571.6Sozaki   - strip(4)
581.6Sozaki   - if_srt
591.6Sozaki   - tap(4)
601.6Sozaki   - vlan(4)
611.6Sozaki - Packet filters
621.6Sozaki   - ipf(4)
631.6Sozaki   - pf(4)
641.6Sozaki - Others
651.6Sozaki   - AppleTalk (sys/netatalk/)
661.6Sozaki   - ATM (sys/netnatm/)
671.6Sozaki   - Bluetooth (sys/netbt/)
681.6Sozaki   - altq(4)
691.6Sozaki   - CIFS (sys/netsmb/)
701.6Sozaki   - ipsec(4)
711.6Sozaki   - ISDN (sys/netisbn/)
721.6Sozaki   - kttcp(4)
731.6Sozaki   - NFS
741.6Sozaki   - opencrypto(9)
751.2Sozaki
761.2SozakiKnow issues
771.2Sozaki===========
781.1Sozaki
791.1Sozakibpf
801.2Sozaki---
811.1Sozaki
821.1SozakiMP-ification of bpf requires all of bpf_mtap* are called in normal LWP context
831.1Sozakior softint context, i.e., not in hardware interrupt context.  For Tx, all
841.1Sozakibpf_mtap satisfy the requrement.  For Rx, most of bpf_mtap are called in softint.
851.1SozakiUnfortunately some bpf_mtap on Rx are still called in hardware interrupt context.
861.1Sozaki
871.1SozakiThis is the list of the functions that have such bpf_mtap:
881.1Sozaki
891.1Sozaki - sca_frame_process() @ sys/dev/ic/hd64570.c
901.1Sozaki - en_intr() @ sys/dev/ic/midway.c
911.1Sozaki - rxintr_cleanup() and txintr_cleanup() @ sys/dev/pci/if_lmc.c
921.1Sozaki - ipr_rx_data_rdy() @ sys/netisdn/i4b_ipr.c
931.1Sozaki
941.1SozakiIdeally we should make the functions run in softint somehow, but we don't have
951.1Sozakiactual devices, no time (or interest/love) to work on the task, so instead we
961.1Sozakiprovide a deferred bpf_mtap mechanism that forcibly runs bpf_mtap in softint
971.1Sozakicontext.  It's a workaround and once the functions run in softint, we should use
981.1Sozakithe original bpf_mtap again.
99