Hi, So here is a complete patch: http://www.netbsd.org/~ozaki-r/softint-if_input-full.diff
With the patch if_input and above should not run in HW interrupt anymore. The patch includes the following changes: - Introduce softint-based if_input mechanism - It is enabled by default for all drivers - It is disabled if if_initialize(ifp, IF_INPUTF_NO_SOFTINT) is used (instead of if_attach) - Some drivers that already uses softint are modified to use IF_INPUTF_NO_SOFTINT - Replace ifp->if_input in every drivers with if_input - It calls softint_schedule if softint-based if_input is enabled for the driver - Band-aid fixes to make every if_input run in softint - atm - atm_input isn't compatible with other if_input and we cannot apply the common mechanism - Fast forward for atm is temporarily disabled for the goal - Need to be fixed in the future - ixg - The driver calls if_input from either HW interrupt or softint depending on load - Disable the former for the goal - (As msaitoh-san says) the driver already has performance issue and has to be overhauled to fix it. We'll tackle the band-aid and the overhaul all together - Put KASSERT(!cpu_intr_p()) in ether_input and bridge_input - If it fails, it's a bug from now on Any comments? ozaki-r