in early versions of plan9 the tcp/ip stack in Streams, inherited (I assume) from V10.
This turned out not to be as clean nor as efficent as hoped and this was dropped for a more traditional implementation in later releases. Maybe the bad experiences of poor performance informed the decision for an in-kernel implementation? -Steve