dccp ccid-2: Separate option parsing from CCID processing
This patch replaces an almost identical replication of code: large parts of dccp_parse_options() re-appeared as ccid2_ackvector() in ccid2.c. Apart from the duplication, this caused two more problems: 1. CCIDs should not need to be concerned with parsing header options; 2. one can not assume that Ack Vectors appear as a contiguous area within an skb, it is legal to insert other options and/or padding in between. The current code would throw an error and stop reading in such a case. Since Ack Vectors provide CCID-specific information, they are now processed by the CCID directly, separating this functionality from the main DCCP code. Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
This commit is contained in:
@@ -55,6 +55,7 @@ struct ccid2_seq {
|
||||
* @tx_rtt_seq: to decay RTTVAR at most once per flight
|
||||
* @tx_rpseq: last consecutive seqno
|
||||
* @tx_rpdupack: dupacks since rpseq
|
||||
* @tx_av_chunks: list of Ack Vectors received on current skb
|
||||
*/
|
||||
struct ccid2_hc_tx_sock {
|
||||
u32 tx_cwnd;
|
||||
@@ -79,6 +80,7 @@ struct ccid2_hc_tx_sock {
|
||||
int tx_rpdupack;
|
||||
u32 tx_last_cong;
|
||||
u64 tx_high_ack;
|
||||
struct list_head tx_av_chunks;
|
||||
};
|
||||
|
||||
static inline bool ccid2_cwnd_network_limited(struct ccid2_hc_tx_sock *hc)
|
||||
|
Reference in New Issue
Block a user