in Solaris 11 TCP code there is a timer for the reassembly queue (tcp_reass_timer). If out-of-order data sits in the reassembly queue for 100*SECONDS (default timeout value for tcp_reass_timeout) and no data is read from the reassembly queue during this period, all the out-of-order data and related SACK information is deleted (data reneging) using the tcp_reass_timer() function defined in common/inet/tcp/tcp_timers.c. Such a timer is not specified in TCP RFC and to my knowledge there is no other OS that implements such a timer. Could you please clarify why Solaris TCP stack have a reassembly queue timer? How does it help to the OS to delete successfully received out-of-order data?