AssertFatal(lcid_buffer_occupancy_new==UE_mac_inst[module_idP].scheduling_info.LCID_buffer_remain[lcid],"LCID=%d RLC has BO %d bytes but MAC has stored %d bytes\n",
AssertFatal(lcid_buffer_occupancy_new<=UE_mac_inst[module_idP].scheduling_info.BSR_bytes[UE_mac_inst[module_idP].scheduling_info.LCGID[lcid]],"LCID=%d RLC has more BO %d bytes than BSR = %d bytes\n",
AssertFatal(UE_mac_inst[module_idP].scheduling_info.LCID_buffer_remain[lcid]>=sdu_lengths[num_sdus],"LCID=%d RLC has segmented %d bytes but MAC has max=%d\n",
AssertFatal(sdu_lengths[num_sdus]<MAX_ULSCH_PAYLOAD_BYTES,"LCID=%d RLC PDU size = %d is too big\n",
lcid,sdu_lengths[num_sdus]);
AssertFatal(UE_mac_inst[module_idP].scheduling_info.LCID_buffer_remain[lcid]>=sdu_lengths[num_sdus],"LCID=%d RLC has segmented %d bytes but MAC has max=%d\n",
boolean_tis_data_plane;/*!< \brief To know if the RLC belongs to a data radio bearer or a signalling radio bearer, for statistics and trace purpose. */
boolean_tis_data_plane;/*!< \brief To know if the RLC belongs to a data radio bearer or a signalling radio bearer, for statistics and trace purpose. */
rlc_buffer_occupancy_tsdu_buffer_occupancy;/*!< \brief Number of bytes of unsegmented SDUs. */
rlc_buffer_occupancy_tsdu_buffer_occupancy;/*!< \brief Number of bytes of unsegmented SDUs. */
rlc_buffer_occupancy_tretransmission_buffer_occupancy;/*!< \brief Number of bytes of PDUs in retransmission buffer waiting for a ACK. */
rlc_buffer_occupancy_tstatus_buffer_occupancy;/*!< \brief Number of bytes of control PDUs waiting for transmission. */
rlc_buffer_occupancy_tstatus_buffer_occupancy;/*!< \brief Number of bytes of control PDUs waiting for transmission. */
rlc_am_tx_data_pdu_management_t*tx_data_pdu_buffer;/*!< \brief Transmission PDU data buffer. Used also for retransmissions */
rlc_am_tx_data_pdu_management_t*tx_data_pdu_buffer;/*!< \brief Transmission PDU data buffer. Used also for retransmissions */
signedintretrans_num_pdus;/*!< \brief Number of PDUs in the retransmission buffer. */
signedintretrans_num_pdus;/*!< \brief Number of PDUs in the retransmission buffer. */
signedintretrans_num_bytes_to_retransmit;/*!< \brief Number of bytes in the retransmission buffer to be retransmitted. */
signedintretrans_num_bytes_to_retransmit;/*!< \brief Number of bytes in the retransmission buffer to be retransmitted. Only payload is taken into account */
boolean_tforce_poll;/*!< \brief force poll due to t_poll_retransmit time-out. */
boolean_tforce_poll;/*!< \brief force poll due to t_poll_retransmit time-out. */
sdu_size_thole_so_start[RLC_AM_MAX_HOLES_REPORT_PER_PDU];/*!< \brief Array containing the start segment offsets for marking a hole (negative acknowledged area) in the PDU. */
sdu_size_thole_so_start[RLC_AM_MAX_HOLES_REPORT_PER_PDU];/*!< \brief Array containing the start segment offsets for marking a hole (negative acknowledged area) in the PDU. */
sdu_size_thole_so_stop[RLC_AM_MAX_HOLES_REPORT_PER_PDU];/*!< \brief Array containing the stop segment offsets for marking a hole (negative acknowledged area) in the PDU. */
sdu_size_thole_so_stop[RLC_AM_MAX_HOLES_REPORT_PER_PDU];/*!< \brief Array containing the stop segment offsets for marking a hole (negative acknowledged area) in the PDU. */
uint8_tnum_holes;/*!< \brief Number of registereg holes in hole_so_start[], hole_so_stop[]. */
uint8_tnum_holes;/*!< \brief Number of registereg holes in hole_so_start[], hole_so_stop[]. */
uint8_tretx_hole_index;/*!< \brief Next index of registered holes to retransmit. */
sdu_size_theader_and_payload_size;/*!< \brief Size of the PDU in bytes, including header and payload. */
sdu_size_theader_and_payload_size;/*!< \brief Size of the PDU in bytes, including header and payload. */
sdu_size_tpayload_size;/*!< \brief Size of the PDU payload in bytes. */
sdu_size_tpayload_size;/*!< \brief Size of the PDU payload in bytes. */
rlc_sn_tsn;/*!< \brief Sequence number of the PDU. */
rlc_sn_tsn;/*!< \brief Sequence number of the PDU. */
* \brief Interface with MAC layer, deserialize the transport blocks sent by MAC, then map data indication to the RLC instance corresponding to the radio bearer identifier.
* \brief Interface with MAC layer, deserialize the transport blocks sent by MAC, then map data indication to the RLC instance corresponding to the radio bearer identifier.
...
@@ -457,18 +458,31 @@ public_rlc_mac(tbs_size_t mac_rlc_data_req (const module_id_t, co
...
@@ -457,18 +458,31 @@ public_rlc_mac(tbs_size_t mac_rlc_data_req (const module_id_t, co
* \brief Interface with MAC layer, request and set the number of bytes scheduled for transmission by the RLC instance corresponding to the radio bearer identifier.
* \brief Interface with MAC layer, request and set the number of bytes scheduled for transmission by the RLC instance corresponding to the radio bearer identifier.
* \brief Interface with MAC layer, UE only: request and get the number of bytes scheduled for transmission by the RLC instance corresponding to the radio bearer identifier.
/* At each TTI, Buffer Occupancy is first computed in mac_rlc_status_ind called by MAC ue_scheduler() function */
/* Then this function is called during MAC multiplexing ue_get_sdu(), and it may be call several times for the same bearer if it is in AM mode and there are several PDU types to transmit */
AssertFatal(enb_flagP==FALSE,"RLC Tx mac_rlc_get_buffer_occupancy_ind function is not implemented for eNB LcId=%d\n",channel_idP);