dccp: support for the exchange of NN options in established state 1/2
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Mon, 25 Jul 2011 02:22:29 +0000 (20:22 -0600)
committerGerrit Renker <gerrit@erg.abdn.ac.uk>
Mon, 1 Aug 2011 13:52:34 +0000 (07:52 -0600)
commitd6916f87ca5e566786f1a935a7cabba54774bbda
tree5420a242fe5f7aacf08e941a96cff8b173eec9aa
parent3da3f872aa175f59e20766ed30aaea67fd4fa7d1
dccp: support for the exchange of NN options in established state 1/2

In contrast to static feature negotiation at the begin of a connection, this
patch introduces support for exchange of dynamically changing options.

Such an update/exchange is necessary in at least two cases:
 * CCID-2's Ack Ratio (RFC 4341, 6.1.2) which changes during the connection;
 * Sequence Window values that, as per RFC 4340, 7.5.2, should be sent "as
   the connection progresses".

Both are non-negotiable (NN) features, which means that no new capabilities
are negotiated, but rather that changes in known parameters are brought
up-to-date at either end.

Thse characteristics are reflected by the implementation:
 * only NN options can be exchanged after connection setup;
 * an ack is scheduled directly after activation to speed up the update;
 * CCIDs may request changes to an NN feature even if a negotiation for that
   feature is already underway: this is required by CCID-2, where changes in
   cwnd necessitate Ack Ratio changes, such that the previous Ack Ratio (which
   is still being negotiated) would cause irrecoverable RTO timeouts (thanks
   to work by Samuel Jero).

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Samuel Jero <sj323707@ohio.edu>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.uk>
net/dccp/dccp.h
net/dccp/feat.c
net/dccp/feat.h