summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading/src/bitloading.c
diff options
context:
space:
mode:
authorJérémy Dufour2011-03-10 11:50:58 +0100
committerJérémy Dufour2011-03-15 18:31:25 +0100
commit7066788da64ca3fffaec69b39f8ff1dade393a69 (patch)
tree9485711be44e39ca1848f2bcf38a950d9096c56a /cesar/ce/rx/bitloading/src/bitloading.c
parent10262acaa03922f1bb8b675702bc5f378713ad4b (diff)
cesar/ce/rx/bl: support negative BER margin, closes #2378
Diffstat (limited to 'cesar/ce/rx/bitloading/src/bitloading.c')
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index 2ab2ebc3f8..fc2c6f0f9b 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -236,6 +236,7 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
u32 sort[PHY_FEC_RATE_NB];
tonemap_t *tm[PHY_FEC_RATE_NB];
uint tone_en;
+ s64 tmp_ber;
phy_fecrate_t fec_rate;
/* For each FEC rate. */
@@ -249,10 +250,10 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
ber_cur = ce_rx_bl_ber_pt_bpt (fec_rate, tonemask->carrier_nb,
bpt_initial[fec_rate]);
/* Apply BER target margin. */
- if (ber_cur > ce_rx_bl_ber_margin_[fec_rate])
- ber_cur = ber_cur - ce_rx_bl_ber_margin_[fec_rate];
- else
- ber_cur = 0;
+ tmp_ber = ber_cur - ce_rx_bl_ber_margin_[fec_rate];
+ dbg_assert (tmp_ber >= 0);
+ dbg_assert (tmp_ber < CE_RX_BL_BER_DEFAULT_OVER);
+ ber_cur = (u64) tmp_ber;
do
{
/* Make the tone map reach the BER consign, no optimization. */
@@ -297,10 +298,10 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
ber_cur = 0;
}
/* Apply BER target margin. */
- if (ber_cur > ce_rx_bl_ber_margin_[fec_rate])
- ber_cur = ber_cur - ce_rx_bl_ber_margin_[fec_rate];
- else
- ber_cur = 0;
+ tmp_ber = ber_cur - ce_rx_bl_ber_margin_[fec_rate];
+ dbg_assert (tmp_ber >= 0);
+ dbg_assert (tmp_ber < CE_RX_BL_BER_DEFAULT_OVER);
+ ber_cur = (u64) tmp_ber;
}
/* Repeat until no modification of the BER consign or until maximum
* number of iterations is reached. */