Re: [PATCH - test-tree] DCCP: Increment sequence number on retransmitted the first REQUEST

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I have thought over the approach  consisting of

 * creating __dccp_transmit_skb() 
   - as the old dccp_transmit_skb(), but without dccp_inc_seqno(&GSS)
   - called directly only from dccp_connect(), so that correctly
     ISS is not incremented before sending the first Request packet.

 * creating a new dccp_transmit_skb()
   - which is called from all other code paths except from dccp_connect()
   - thus including the retransmissions of Requests via dccp_retransmit_skb()
   - which increments GSS only when it is already greater than or equal to ISS;
   - and calls __dccp_transmit_skb() for the rest.

The approach is correct and works.

I am having a second problem here which the following patch in the test tree tried to solve, 
http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=dccp_exp.git;a=commitdiff;h=1a9c8cc01caf3da8e65d82b5d47d377bafbd51bd
	 
The problem is that AWL=GSS was only set in dccp_connect(), so we need to call
dccp_update_gss() in addition to dccp_inc_seqno().

It gets a bit more complicated, since
 * the option-insertion code  may rely on the current value of GSS (Ack Vectors are an example);
 * the option-insertion code can fail (e.g. insufficient space left for options on skb);
 * so first incrementing GSS and then aborting dccp_transmit_skb() would cause a sequence hole.

The approach taken in the above patch-URL is to
 * assign the incremented value of GSS to the temporary `seq' field in dccp_skb_cb;
 * overwrite this `seq' field with ISS on the first Request;
 * in all instances, update GSS for real only if option-insertion worked;
 * that call to dccp_update_gss() also sets AWL, fixing the second problem.

The reason that this fix is at a later stage in the test tree is that updating AWL in turn depends
on the value of the local Sequence Window feature (RFC 4340, 7.5.1), which in turn depends on the
feature-negotiation code; this part is in
http://eden-feed.erg.abdn.ac.uk/cgi-bin/gitweb.cgi?p=dccp_exp.git;a=commitdiff;h=bc62a9e2fa53f20bf80f5691d757950fb86c6f30

The second step/bullet-point is, as pointed out by Wei Yongjun, still not working correctly
with regard to incrementing sequence numbers on retransmissions.

I have an alternative suggestion for handling the retransmissions, am
currently testing this, and will submit patch subsequently.

Gerrit
--
To unsubscribe from this list: send the line "unsubscribe dccp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [IETF DCCP]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux