> It seems like
> several variables are locked for the vast majority of the time in
> tcp_input().
inp, in particular, should be locked the entire time in tcp_input, so you
are always going to have your "could sleep with lock held" problem unless
you add M_NOWAIT to your calls to malloc() or
I have been spending quite a lot of time rooting through the TCP
implementation recently due to my efforts with Web100.
I have been trying to understand the locking strategy in the TCP portions of
the code. I have primarily been looking at tcp_input.c. It seems like
several variables a