RLC AM fix Tx Status Report
This commit is contained in:
@@ -134,8 +134,11 @@ rlc_am_get_status_pdu_buffer_occupancy(
|
|||||||
} // end if segments
|
} // end if segments
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Go to next received PDU or PDU Segment */
|
/* Go to next received PDU or PDU segment with different SN */
|
||||||
cursor_p = cursor_p->next;
|
do
|
||||||
|
{
|
||||||
|
cursor_p = cursor_p->next;
|
||||||
|
} while ((cursor_p != NULL) && (((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info.sn == sn_cursor));
|
||||||
}
|
}
|
||||||
|
|
||||||
sn_prev = RLC_AM_NEXT_SN(sn_cursor);
|
sn_prev = RLC_AM_NEXT_SN(sn_cursor);
|
||||||
|
|||||||
@@ -638,7 +638,6 @@ rlc_am_rx_pdu_status_t rlc_am_rx_list_handle_pdu(
|
|||||||
mem_block_t* trunc_pdu = create_new_segment_from_pdu(tb_pP,next_waited_so,pdu_rx_info_p->payload_size - next_waited_so);
|
mem_block_t* trunc_pdu = create_new_segment_from_pdu(tb_pP,next_waited_so,pdu_rx_info_p->payload_size - next_waited_so);
|
||||||
|
|
||||||
if (trunc_pdu != NULL) {
|
if (trunc_pdu != NULL) {
|
||||||
((rlc_am_rx_pdu_management_t *) (trunc_pdu->data))->segment_reassembled = RLC_AM_RX_PDU_SEGMENT_REASSEMBLE_PENDING;
|
|
||||||
/* Insert PDU Segment */
|
/* Insert PDU Segment */
|
||||||
list2_insert_after_element(trunc_pdu, previous_cursor_p, &rlc_pP->receiver_buffer);
|
list2_insert_after_element(trunc_pdu, previous_cursor_p, &rlc_pP->receiver_buffer);
|
||||||
|
|
||||||
@@ -1317,7 +1316,9 @@ rlc_am_rx_list_reassemble_rlc_sdus(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Reset Management pointers */
|
/* Reset Management pointers */
|
||||||
if (cursor_p != NULL) {
|
if ((cursor_p != NULL) &&
|
||||||
|
((((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info.sn == RLC_AM_NEXT_SN(sn)) ||
|
||||||
|
(((rlc_am_rx_pdu_management_t*)(cursor_p->data))->segment_reassembled == RLC_AM_RX_PDU_SEGMENT_REASSEMBLE_PENDING))) {
|
||||||
rlc_am_rx_pdu_management_p = ((rlc_am_rx_pdu_management_t*)(cursor_p->data));
|
rlc_am_rx_pdu_management_p = ((rlc_am_rx_pdu_management_t*)(cursor_p->data));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -723,8 +723,10 @@ rlc_am_send_status_pdu(
|
|||||||
}
|
}
|
||||||
} // end while on all PDU segments of sn_cursor
|
} // end while on all PDU segments of sn_cursor
|
||||||
else {
|
else {
|
||||||
/* Go to next received PDU or PDU segment if sn_cursor is fully received */
|
/* Go to next received PDU or PDU segment with different SN */
|
||||||
cursor_p = cursor_p->next;
|
do {
|
||||||
|
cursor_p = cursor_p->next;
|
||||||
|
} while ((cursor_p != NULL) && (((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info.sn == sn_cursor));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Increment sn_nack except if sn_nack = vrMS and if current SN was not fully received */
|
/* Increment sn_nack except if sn_nack = vrMS and if current SN was not fully received */
|
||||||
|
|||||||
Reference in New Issue
Block a user