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