Skip to contentSkip to conversation

Enforces a minimum interval of 10 milliseconds as per CCID-4 draft

PATCH In review Leandro 4 participants 5 messages Nov 1, 2007 – Nov 13, 2007

lore
Share & tools
lore

Leandro

author
#0 lore raw

PATCH 5/25 Enforces a minimum interval of 10 milliseconds as per CCID-4 draft

[CCID-4] Enforces a minimum interval of 10 milliseconds as per CCID-4 draft

Index: leandro.new/net/dccp/ccids/ccid4.c =================================--- leandro.new.orig/net/dccp/ccids/ccid4.c +++ leandro.new/net/dccp/ccids/ccid4.c
@@ -111,9 +111,11 @@ static inline u64 rfc3390_initial_rate(s
*/
static inline void ccid4_update_send_interval(struct ccid4_hc_tx_sock *hctx) {
- /* Calculate new t_ipi = s / X_inst (X_inst is in 64 * bytes/second) */
- hctx->ccid4hctx_t_ipi = scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
- hctx->ccid4hctx_x);
+ /* Calculate new t_ipi = s / X_inst (X_inst is in 64 * bytes/second).
+ * TFRC-SP enforces a minimum interval of 10 milliseconds. */
+ hctx->ccid4hctx_t_ipi + max_t(u32, scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
+ hctx->ccid4hctx_x), MIN_SEND_RATE);

/* Calculate new delta by delta = min(t_ipi / 2, t_gran / 2) */ hctx->ccid4hctx_delta = min_t(u32, hctx->ccid4hctx_t_ipi / 2,
Index: leandro.new/net/dccp/ccids/ccid4.h =================================--- leandro.new.orig/net/dccp/ccids/ccid4.h +++ leandro.new/net/dccp/ccids/ccid4.h
@@ -68,6 +68,9 @@
/* The nominal packet size to be used into TFRC equation as per CCID-4 draft*/
#define NOM_PACKET_SIZE 1460

+/* Mininum sending rate as per CCID-4 draft */
+#define MIN_SEND_RATE 10000
+
enum ccid4_options {
TFRC_OPT_LOSS_EVENT_RATE = 192,
TFRC_OPT_LOSS_INTERVALS = 193,

#2 lore raw
In reply to Leandro
| @@ -111,9 +111,11 @@ static inline u64 rfc3390_initial_rate(s
|   */
|  static inline void ccid4_update_send_interval(struct ccid4_hc_tx_sock *hctx)
|  {
| -	/* Calculate new t_ipi = s / X_inst (X_inst is in 64 * bytes/second) */
| -	hctx->ccid4hctx_t_ipi = scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
| -					     hctx->ccid4hctx_x);
| +        /* Calculate new t_ipi = s / X_inst (X_inst is in 64 * bytes/second).
| +         * TFRC-SP enforces a minimum interval of 10 milliseconds. */
| +        hctx->ccid4hctx_t_ipi | +              max_t(u32, scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
| +                                      hctx->ccid4hctx_x), MIN_SEND_RATE);

Whitespace - I have taken the liberty of replacing the above blanks with tabs. Also a comment regarding comments: as far as I know the accepted practice for multiline comments is

	/*
	 * comment text which extends over one line
	 * and another
	 */

While at it, I've done this also. Maybe the code would be clearer to read this way:

	hctx->ccid4hctx_t_ipi = scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
					     hctx->ccid4hctx_x));
	if (hctx->ccid4hctx_t_ipi <  MIN_SEND_RATE)
		hctx->ccid4hctx_t_ipi = MIN_SEND_RATE;

This is one of the cases where the overly long tags `ccid4hctx_' are in the way.
If we had c4tx, the above reads

	hctx->c4tx_t_ipi = scaled_div32(((u64)hctx->c4tx_s) <<6, hctx->c4tx_x));
	if (hctx->c4tx_t_ipi <  MIN_SEND_RATE)
		hctx->c4tx_t_ipi = MIN_SEND_RATE;

So the problem is not your code, it is again these long identifiers. I am overhauling the old CCID3 patch set, maybe this should be kept on the todo list -- comments?

#3 lore raw

Re: [PATCH 5/25] Enforces a minimum interval of 10 milliseconds as

In reply to Leandro
Quoted 6 lines · Gerrit Renker

Maybe the code would be clearer to read this way:

	hctx->ccid4hctx_t_ipi = scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
					     hctx->ccid4hctx_x));
	if (hctx->ccid4hctx_t_ipi <  MIN_SEND_RATE)
		hctx->ccid4hctx_t_ipi = MIN_SEND_RATE;

Yes, it would. I was going to ask whether one of them would be considered more effective, but I then realised this is probably one of those cases where you should write readable code and let the compiler to worry about the rest.

#4 lore raw
In reply to Leandro

2007/11/9, Tommi Saviranta <[email protected]>:

Quoted 13 lines · Gerrit Renker
Quoted 6 lines

Maybe the code would be clearer to read this way:

      hctx->ccid4hctx_t_ipi = scaled_div32(((u64)hctx->ccid4hctx_s) << 6,
                                           hctx->ccid4hctx_x));
      if (hctx->ccid4hctx_t_ipi <  MIN_SEND_RATE)
              hctx->ccid4hctx_t_ipi = MIN_SEND_RATE;

Yes, it would. I was going to ask whether one of them would be considered more effective, but I then realised this is probably one of those cases where you should write readable code and let the compiler to worry about the rest.

Quoted 5 lines

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

Yes, I also agree with this.

Leandro.