pcu: f_acknackdesc_ack_block: Fix BSN wrap-around
Change-Id: Ibe90e58e04ae5e24c36a0b3dda6742080107bd51
This commit is contained in:
parent
7512259cce
commit
9a2d61bb3c
|
@ -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: */
|
||||
|
|
Loading…
Reference in New Issue