linux/net/dccp/ccids
Gerrit Renker c5a1ae9a4c [DCCP] ccid3: Perform history operations only after packet has been sent
This migrates all packet history operations into the routine
 ccid3_hc_tx_packet_sent, thereby removing synchronization problems
 that occur when, as before, the operations are spread over multiple
 routines.
 The following minor simplifications are also applied:
  * several simplifications now follow from this change - several tests
    are now no longer required
  * removal of one unnecessary variable (dp)

Justification:

 Currently packet history operations span two different routines,
 one of which is likely to pass through several iterations of sleeping
 and awakening.
 The first routine, ccid3_hc_tx_send_packet, allocates an entry and
 sets a few fields. The remaining fields are filled in when the second
 routine (which is not within a sleeping context), ccid3_hc_tx_packet_sent,
 is called. This has several strong drawbacks:
  * it is not necessary to split history operations - all fields can be
    filled in by the second routine
  * the first routine is called multiple times, until a packet can be sent,
    and sleeps meanwhile - this causes a lot of difficulties with regard to
    keeping the list consistent
  * since both routines do not have a producer-consumer like synchronization,
    it is very difficult to maintain data across calls to these routines
  * the fact that the routines are called in different contexts (sleeping, not
    sleeping) adds further problems

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
2006-12-11 14:34:54 -08:00
..
lib [DCCP] ccid3: TX history - remove unused field 2006-12-11 14:34:53 -08:00
ccid2.c [DCCP]: Use `unsigned' for packet lengths 2006-12-02 21:31:02 -08:00
ccid2.h [DCCP] ccid2: Allow window to grow larger 2006-12-02 21:30:34 -08:00
ccid3.c [DCCP] ccid3: Perform history operations only after packet has been sent 2006-12-11 14:34:54 -08:00
ccid3.h [DCCP] ccid3: Sanity-check RTT samples 2006-12-11 14:34:51 -08:00
Kconfig [DCCP]: Use higher RTO default for CCID3 2006-12-03 14:50:23 -02:00
Makefile [DCCP] CCID2: Initial CCID2 (TCP-Like) implementation 2006-03-20 17:41:47 -08:00