pcu: f_acknackdesc_ack_block: Fix BSN wrap-around

Change-Id: Ibe90e58e04ae5e24c36a0b3dda6742080107bd51
This commit is contained in:
Pau Espin 2020-11-05 17:59:16 +01:00
parent 7512259cce
commit 9a2d61bb3c
1 changed files with 8 additions and 2 deletions

View File

@ -625,12 +625,18 @@ function f_acknackdesc_ack_block(inout AckNackDescription desc, RlcmacDlBlock dl
bsn := dl_block.data_egprs.mac_hdr.bsn1;
}
inc := bsn - desc.starting_seq_nr + 1;
/* Filling hole? */
if (bsn < desc.starting_seq_nr) {
desc.receive_block_bitmap[lengthof(desc.receive_block_bitmap) - (desc.starting_seq_nr - bsn)] := int2bit(1, 1);
return;
}
/* Filling hole, wraparound: */
if (bsn - desc.starting_seq_nr > lengthof(desc.receive_block_bitmap)) {
desc.receive_block_bitmap[lengthof(desc.receive_block_bitmap) - (desc.starting_seq_nr + (218 - bsn))] := int2bit(1, 1);
return;
}
inc := bsn - desc.starting_seq_nr + 1;
/* SSN is increased, and so RBB values need to be moved */
for (i := 0; i < lengthof(desc.receive_block_bitmap) - inc; i := i+1) {
@ -640,7 +646,7 @@ function f_acknackdesc_ack_block(inout AckNackDescription desc, RlcmacDlBlock dl
desc.receive_block_bitmap[i] := int2bit(0, 1);
}
/* Now we can set current bit and update SSN */
desc.starting_seq_nr := bsn + 1;
desc.starting_seq_nr := (bsn + 1) mod 128;
desc.receive_block_bitmap[lengthof(desc.receive_block_bitmap) - 1] := int2bit(1, 1);
/* Finally update the final_ack bit as requested: */