Make the packet queue in charge of managing its own reorder depth.  Caller can specify the depth and max (or optionally use defaults) and the queue will handle letting people know when data's actually ready.