"(contains %d slices)\n", oldest->h.group_num,
oldest->num_received_slices);
if (oldest == pfd->first_complete_group)
"(contains %d slices)\n", oldest->h.group_num,
oldest->num_received_slices);
if (oldest == pfd->first_complete_group)
r = fg->num_received_slices;
/* Check if we already have this slice. */
if (test_and_set_slice_bit(fg, slice_num)) {
r = fg->num_received_slices;
/* Check if we already have this slice. */
if (test_and_set_slice_bit(fg, slice_num)) {
size_t written, need;
struct private_fecdec_data *pfd = fn->private_data;
enum fec_group_usability u = group_is_usable(fg, pfd);
size_t written, need;
struct private_fecdec_data *pfd = fn->private_data;
enum fec_group_usability u = group_is_usable(fg, pfd);
fg->h.data_slices_per_group);
ret = fec_decode(pfd->fec, fg->data, fg->idx, sb);
if (ret < 0)
fg->h.data_slices_per_group);
ret = fec_decode(pfd->fec, fg->data, fg->idx, sb);
if (ret < 0)
fg->h.group_num, fg->h.group_bytes,
fg->h.data_slices_per_group * sb);
need = (fg->h.data_slices_per_group - i) * sb;
if (need > btr_pool_unused(pfd->btrp))
return -E_FECDEC_OVERRUN;
btr_pool_get_buffer(pfd->btrp, &buf);
fg->h.group_num, fg->h.group_bytes,
fg->h.data_slices_per_group * sb);
need = (fg->h.data_slices_per_group - i) * sb;
if (need > btr_pool_unused(pfd->btrp))
return -E_FECDEC_OVERRUN;
btr_pool_get_buffer(pfd->btrp, &buf);
btr_copy(fg->data[i], n, pfd->btrp, fn->btrn);
written += n;
}
btr_copy(fg->data[i], n, pfd->btrp, fn->btrn);
written += n;
}
btr_copy(fg->data[i], n, pfd->btrp, fn->btrn);
written += n;
}
btr_copy(fg->data[i], n, pfd->btrp, fn->btrn);
written += n;
}
/* decode and clear the first group */
ret = decode_group(pfd->first_complete_group, fn);
if (ret < 0)
/* decode and clear the first group */
ret = decode_group(pfd->first_complete_group, fn);
if (ret < 0)