On 02/03/16 04:44, Ryota Ozaki wrote:
On Tue, Feb 2, 2016 at 8:51 AM, Taylor R Campbell <campbell+netbsd-tech-k...@mumble.net> wrote:
[snip]
In this case, it's not a priori clear to me why the caller must be in hardintr context. Perhaps you want to discourage callers from using this if they're already in softint context. But even if the caller is in softint context, maybe it's higher-priority softint context than softnet (e.g., I think skrll@ plans to make all USB softints run at softserial instead of softnet), and maybe you don't want ifp->if_input to run at >softnet priority.
I'm still debating what to do here, but it's clear to me that all USB callbacks running at splsoftnet
has issues - see http://gnats.netbsd.org/50491 and somewhat related http://gnats.netbsd.org/49065
Oh, that's a case I didn't take into account. Running if->if_input at >softnet priority would break the assumption that we rely on.
What assumption are you making?
We may be able to change the assert to KASSERT(cpu_intr_p() || (cpu_softintr_p() && level != SOFTINT_NET)) though, I think we don't need to be paranoid for the case. (And I don't know how to get level. Is there API?).
There isn't an API afaik.
ozaki-r
Nick