~ubuntu-branches/ubuntu/precise/libpgm/precise

« back to all changes in this revision

Viewing changes to openpgm/pgm/.svn/text-base/txw.c.c89.patch.svn-base

  • Committer: Bazaar Package Importer
  • Author(s): Gabriel de Perthuis
  • Date: 2011-04-07 16:48:52 UTC
  • Revision ID: james.westby@ubuntu.com-20110407164852-8uamem42ojeptj6l
Tags: upstream-5.1.116~dfsg
ImportĀ upstreamĀ versionĀ 5.1.116~dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--- txw.c       2011-03-12 10:37:12.000000000 +0800
 
2
+++ txw.c89.c   2011-03-12 11:15:05.000000000 +0800
 
3
@@ -193,12 +193,13 @@
 
4
 
 
5
        pgm_debug ("create (tsi:%s max-tpdu:%" PRIu16 " sqns:%" PRIu32  " secs %u max-rte %" PRIzd " use-fec:%s rs(n):%u rs(k):%u)",
 
6
                pgm_tsi_print (tsi),
 
7
-               tpdu_size, sqns, secs, max_rte,
 
8
+               tpdu_size, sqns, secs, (long)max_rte,
 
9
                use_fec ? "YES" : "NO",
 
10
                rs_n, rs_k);
 
11
 
 
12
 /* calculate transmit window parameters */
 
13
        pgm_assert (sqns || (tpdu_size && secs && max_rte));
 
14
+       {
 
15
        const unsigned alloc_sqns = sqns ? sqns : (unsigned)( (secs * max_rte) / tpdu_size );
 
16
        window = pgm_malloc0 (sizeof(pgm_txw_t) + ( alloc_sqns * sizeof(struct pgm_sk_buff_t*) ));
 
17
        window->tsi = tsi;
 
18
@@ -230,6 +231,7 @@
 
19
        pgm_assert (!pgm_txw_retransmit_can_peek (window));
 
20
 
 
21
        return window;
 
22
+       }
 
23
 }
 
24
 
 
25
 /* destructor for transmit window.  must not be called more than once for same window.
 
26
@@ -317,8 +319,10 @@
 
27
        skb->sequence = window->lead;
 
28
 
 
29
 /* add skb to window */
 
30
+       {
 
31
        const uint_fast32_t index_ = skb->sequence % pgm_txw_max_length (window);
 
32
        window->pdata[index_] = skb;
 
33
+       }
 
34
 
 
35
 /* statistics */
 
36
        window->size += skb->len;
 
37
@@ -455,6 +459,7 @@
 
38
        pgm_assert (NULL != window);
 
39
        pgm_assert_cmpuint (tg_sqn_shift, <, 8 * sizeof(uint32_t));
 
40
 
 
41
+       {
 
42
        const uint32_t tg_sqn_mask = 0xffffffff << tg_sqn_shift;
 
43
        const uint32_t nak_tg_sqn  = sequence &  tg_sqn_mask;   /* left unshifted */
 
44
        const uint32_t nak_pkt_cnt = sequence & ~tg_sqn_mask;
 
45
@@ -493,6 +498,7 @@
 
46
        pgm_assert (!pgm_queue_is_empty (&window->retransmit_queue));
 
47
        state->waiting_retransmit = 1;
 
48
        return TRUE;
 
49
+       }
 
50
 }
 
51
 
 
52
 static
 
53
@@ -585,10 +591,13 @@
 
54
        }
 
55
 
 
56
 /* generate parity packet to satisify request */       
 
57
+       {
 
58
        const uint8_t rs_h = state->pkt_cnt_sent % (window->rs.n - window->rs.k);
 
59
        const uint32_t tg_sqn_mask = 0xffffffff << window->tg_sqn_shift;
 
60
        const uint32_t tg_sqn = skb->sequence & tg_sqn_mask;
 
61
-       for (uint_fast8_t i = 0; i < window->rs.k; i++)
 
62
+       {
 
63
+       uint_fast8_t i;
 
64
+       for (i = 0; i < window->rs.k; i++)
 
65
        {
 
66
                const struct pgm_sk_buff_t* odata_skb = pgm_txw_peek (window, tg_sqn + i);
 
67
                const uint16_t odata_tsdu_length = ntohs (odata_skb->pgm_header->pgm_tsdu_length);
 
68
@@ -608,6 +617,7 @@
 
69
                        is_op_encoded = TRUE;
 
70
                }
 
71
        }
 
72
+       }
 
73
 
 
74
 /* construct basic PGM header to be completed by send_rdata() */
 
75
        skb = window->parity_buffer;
 
76
@@ -627,7 +637,9 @@
 
77
        {
 
78
                skb->pgm_header->pgm_options |= PGM_OPT_VAR_PKTLEN;
 
79
 
 
80
-               for (uint_fast8_t i = 0; i < window->rs.k; i++)
 
81
+               {
 
82
+               uint_fast8_t i;
 
83
+               for (i = 0; i < window->rs.k; i++)
 
84
                {
 
85
                        struct pgm_sk_buff_t* odata_skb = pgm_txw_peek (window, tg_sqn + i);
 
86
                        const uint16_t odata_tsdu_length = ntohs (odata_skb->pgm_header->pgm_tsdu_length);
 
87
@@ -641,6 +653,7 @@
 
88
                                odata_skb->zero_padded = 1;
 
89
                        }
 
90
                }
 
91
+               }
 
92
                parity_length += 2;
 
93
        }
 
94
 
 
95
@@ -657,17 +670,21 @@
 
96
  */
 
97
        if (is_op_encoded)
 
98
        {
 
99
-               struct pgm_opt_header   *opt_header;
 
100
-               struct pgm_opt_length   *opt_len;
 
101
-               struct pgm_opt_fragment *opt_fragment, null_opt_fragment;
 
102
-               const pgm_gf8_t         *opt_src[ window->rs.k ];
 
103
+               struct pgm_opt_header    *opt_header;
 
104
+               struct pgm_opt_length    *opt_len;
 
105
+               struct pgm_opt_fragment  *opt_fragment, null_opt_fragment;
 
106
+               const pgm_gf8_t         **opt_src;
 
107
 
 
108
                skb->pgm_header->pgm_options |= PGM_OPT_PRESENT;
 
109
 
 
110
                memset (&null_opt_fragment, 0, sizeof(null_opt_fragment));
 
111
                *(uint8_t*)&null_opt_fragment |= PGM_OP_ENCODED_NULL;
 
112
 
 
113
-               for (uint_fast8_t i = 0; i < window->rs.k; i++)
 
114
+               opt_src = pgm_newa (pgm_gf8_t*, window->rs.k);
 
115
+
 
116
+               {
 
117
+               uint_fast8_t i;
 
118
+               for (i = 0; i < window->rs.k; i++)
 
119
                {
 
120
                        const struct pgm_sk_buff_t* odata_skb = pgm_txw_peek (window, tg_sqn + i);
 
121
 
 
122
@@ -682,8 +699,10 @@
 
123
                                opt_src[i] = (pgm_gf8_t*)&null_opt_fragment;
 
124
                        }
 
125
                }
 
126
+               }
 
127
 
 
128
 /* add options to this rdata packet */
 
129
+               {
 
130
                const uint16_t opt_total_length = sizeof(struct pgm_opt_length) +
 
131
                                                 sizeof(struct pgm_opt_header) +
 
132
                                                 sizeof(struct pgm_opt_fragment);
 
133
@@ -695,6 +714,7 @@
 
134
                opt_len->opt_type                       = PGM_OPT_LENGTH;
 
135
                opt_len->opt_length                     = sizeof(struct pgm_opt_length);
 
136
                opt_len->opt_total_length               = htons ( opt_total_length );
 
137
+               }
 
138
                opt_header                              = (struct pgm_opt_header*)(opt_len + 1);
 
139
                opt_header->opt_type                    = PGM_OPT_FRAGMENT | PGM_OPT_END;
 
140
                opt_header->opt_length                  = sizeof(struct pgm_opt_header) + sizeof(struct pgm_opt_fragment);
 
141
@@ -723,9 +743,12 @@
 
142
                        parity_length);
 
143
 
 
144
 /* calculate partial checksum */
 
145
+       {
 
146
        const uint16_t tsdu_length = ntohs (skb->pgm_header->pgm_tsdu_length);
 
147
        state->unfolded_checksum = pgm_csum_partial ((char*)skb->tail - tsdu_length, tsdu_length, 0);
 
148
+       }
 
149
        return skb;
 
150
+       }
 
151
 }
 
152
 
 
153
 /* remove head entry from retransmit queue, will fail on assertion if queue is empty.