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