summaryrefslogtreecommitdiff
path: root/mcast_image.h
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2007-08-14 22:54:49 +0800
committerDavid Woodhouse <dwmw2@infradead.org>2007-08-14 22:54:49 +0800
commit5f262bc2fc1a427b20fd4f54df0dbe650da47807 (patch)
tree48ebd3fa20534eeb70e0163eba1b029e09492c00 /mcast_image.h
parent596450e1d50cce8701dccd65eaa3d646f525b375 (diff)
Switch multicast distribution system to round-robin mode
Send one packet from each eraseblock in turn, rather than all packets for one eraseblock together. This means that bursts of loss are evenly spread between blocks. It also makes the client side a bit more complex if you can't assume that there's anywhere except the flash to store its intermediate data. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'mcast_image.h')
-rw-r--r--mcast_image.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/mcast_image.h b/mcast_image.h
index 26c675e..8ca2102 100644
--- a/mcast_image.h
+++ b/mcast_image.h
@@ -9,6 +9,7 @@ struct image_pkt_hdr {
uint32_t blocksize;
uint32_t block_crc;
uint32_t block_nr;
+ uint32_t pkt_sequence;
uint16_t pkt_nr;
uint16_t nr_pkts;
uint32_t thislen;
@@ -32,9 +33,14 @@ void fec_free(struct fec_parms *p);
* fec - buffer for packet to be generated
* index - index of packet to be generated (0 <= index < n)
* sz - data packet size
+ *
+ * _linear version just takes a pointer to the raw data; no
+ * mucking about with packet pointers.
*/
void fec_encode(struct fec_parms *code, unsigned char *src[],
unsigned char *fec, int index, int sz);
+void fec_encode_linear(struct fec_parms *code, unsigned char *src,
+ unsigned char *fec, int index, int sz);
/* data - array of (k) pointers to data packets, in arbitrary order (see i)
* i - indices of (data) packets