summaryrefslogtreecommitdiff
path: root/cesar/mac/pbproc/src
diff options
context:
space:
mode:
authorNicolas Schodet2011-03-28 14:57:29 +0200
committerNicolas Schodet2011-05-25 16:45:04 +0200
commite1678ab811e14d7678c47d132f444afd7dd55bc1 (patch)
treeb95985bb37133136f21fca5b6c167bb7c8cbe894 /cesar/mac/pbproc/src
parent8661bb09591442cad4b8fe27f51d2c5adb32c588 (diff)
cesar/mac/pbproc: eat the right number of bitmap SACKI bits, refs #362
Diffstat (limited to 'cesar/mac/pbproc/src')
-rw-r--r--cesar/mac/pbproc/src/prep_mpdu.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/cesar/mac/pbproc/src/prep_mpdu.c b/cesar/mac/pbproc/src/prep_mpdu.c
index 208faa3b1e..ce39d71743 100644
--- a/cesar/mac/pbproc/src/prep_mpdu.c
+++ b/cesar/mac/pbproc/src/prep_mpdu.c
@@ -734,6 +734,7 @@ pbproc_prep_mpdu_ack_bitmap (pbproc_t *ctx, uint mpdu_count,
dbg_claim (prep->main_seg_nb_reserved == 0);
dbg_claim (mpdu->pb_nb_total >= mpdu->main_seg_nb);
/* Read bitmap and collect acknowledged PB. */
+ uint bmpw = 0;
u32 bmp0 = 0;
uint bmp0l = 0;
uint i, is = MIN (sacki_dec->sil, mpdu->main_seg_nb);
@@ -747,8 +748,8 @@ pbproc_prep_mpdu_ack_bitmap (pbproc_t *ctx, uint mpdu_count,
{
if (!bmp0l)
{
- bmp0l = MIN (is - i, 32u);
- bmp0 = pbproc_sacki_dec_read (sacki_dec, bmp0l);
+ bmp0l = 32;
+ bmp0 = sacki_dec->si[bmpw++];
}
if (bmp0 & 1)
{
@@ -767,6 +768,8 @@ pbproc_prep_mpdu_ack_bitmap (pbproc_t *ctx, uint mpdu_count,
if (is < mpdu->main_seg_nb)
slist_push_back_range (nok_, p, mpdu->main_tail,
mpdu->main_seg_nb - is, paste_size);
+ /* Consume SACKI bits. */
+ pbproc_sacki_dec_eat (sacki_dec, mpdu->pb_nb_total);
/* Commit. */
pbproc_prep_mpdu_commit (ctx, mpdu_count,
ok_head, ok_tail, nok_head, nok_tail, nok_size);