Initial DSACK implementation, including partial overlaps per RFC2883
For incoming data segments, if they are duplicate or overlap already
received data, send out a DSACK block as the 1st SACK block, indicating
the overlap.
Does not send DSACK block on cummulative ACKs, even when the segment
with all the outstanding data overlaps left or right with already
received data.
If overlaps exist deeper into the sackblk array, may not coalesce these
properly.
The common case, with equal sized segments and identical segment
boundaries works as per RFC2883.