nr rlc: add an API function to retrieve the occupancy of TX list
This commit is contained in:
@@ -125,6 +125,7 @@ nr_rlc_entity_t *new_nr_rlc_entity_am(
|
||||
ret->common.reestablishment = nr_rlc_entity_am_reestablishment;
|
||||
ret->common.delete_entity = nr_rlc_entity_am_delete;
|
||||
ret->common.available_tx_space = nr_rlc_entity_am_available_tx_space;
|
||||
ret->common.tx_list_occupancy = nr_rlc_entity_am_tx_list_occupancy;
|
||||
ret->common.get_stats = nr_rlc_entity_get_stats;
|
||||
|
||||
ret->common.deliver_sdu = deliver_sdu;
|
||||
@@ -186,6 +187,7 @@ nr_rlc_entity_t *new_nr_rlc_entity_um(
|
||||
ret->common.reestablishment = nr_rlc_entity_um_reestablishment;
|
||||
ret->common.delete_entity = nr_rlc_entity_um_delete;
|
||||
ret->common.available_tx_space = nr_rlc_entity_um_available_tx_space;
|
||||
ret->common.tx_list_occupancy = nr_rlc_entity_um_tx_list_occupancy;
|
||||
ret->common.get_stats = nr_rlc_entity_get_stats;
|
||||
|
||||
ret->common.deliver_sdu = deliver_sdu;
|
||||
@@ -226,6 +228,7 @@ nr_rlc_entity_t *new_nr_rlc_entity_tm(
|
||||
ret->common.reestablishment = nr_rlc_entity_tm_reestablishment;
|
||||
ret->common.delete_entity = nr_rlc_entity_tm_delete;
|
||||
ret->common.available_tx_space = nr_rlc_entity_tm_available_tx_space;
|
||||
ret->common.tx_list_occupancy = nr_rlc_entity_tm_tx_list_occupancy;
|
||||
ret->common.get_stats = nr_rlc_entity_get_stats;
|
||||
|
||||
ret->common.deliver_sdu = deliver_sdu;
|
||||
|
||||
@@ -116,6 +116,7 @@ typedef struct nr_rlc_entity_t {
|
||||
void (*delete_entity)(struct nr_rlc_entity_t *entity);
|
||||
|
||||
int (*available_tx_space)(struct nr_rlc_entity_t *entity);
|
||||
int (*tx_list_occupancy)(struct nr_rlc_entity_t *entity);
|
||||
|
||||
void (*get_stats)(struct nr_rlc_entity_t *entity, nr_rlc_statistics_t *out);
|
||||
|
||||
|
||||
@@ -2116,3 +2116,8 @@ int nr_rlc_entity_am_available_tx_space(nr_rlc_entity_t *_entity)
|
||||
return entity->tx_maxsize - entity->tx_size;
|
||||
}
|
||||
|
||||
int nr_rlc_entity_am_tx_list_occupancy(nr_rlc_entity_t *_entity)
|
||||
{
|
||||
nr_rlc_entity_am_t *entity = (nr_rlc_entity_am_t *)_entity;
|
||||
return entity->tx_size;
|
||||
}
|
||||
|
||||
@@ -101,5 +101,6 @@ void nr_rlc_entity_am_discard_sdu(nr_rlc_entity_t *_entity, int sdu_id);
|
||||
void nr_rlc_entity_am_reestablishment(nr_rlc_entity_t *_entity);
|
||||
void nr_rlc_entity_am_delete(nr_rlc_entity_t *entity);
|
||||
int nr_rlc_entity_am_available_tx_space(nr_rlc_entity_t *entity);
|
||||
int nr_rlc_entity_am_tx_list_occupancy(nr_rlc_entity_t *_entity);
|
||||
|
||||
#endif /* _NR_RLC_ENTITY_AM_H_ */
|
||||
|
||||
@@ -221,3 +221,9 @@ int nr_rlc_entity_tm_available_tx_space(nr_rlc_entity_t *_entity)
|
||||
nr_rlc_entity_tm_t *entity = (nr_rlc_entity_tm_t *)_entity;
|
||||
return entity->tx_maxsize - entity->tx_size;
|
||||
}
|
||||
|
||||
int nr_rlc_entity_tm_tx_list_occupancy(nr_rlc_entity_t *_entity)
|
||||
{
|
||||
nr_rlc_entity_tm_t *entity = (nr_rlc_entity_tm_t *)_entity;
|
||||
return entity->tx_size;
|
||||
}
|
||||
|
||||
@@ -56,5 +56,6 @@ void nr_rlc_entity_tm_discard_sdu(nr_rlc_entity_t *_entity, int sdu_id);
|
||||
void nr_rlc_entity_tm_reestablishment(nr_rlc_entity_t *_entity);
|
||||
void nr_rlc_entity_tm_delete(nr_rlc_entity_t *entity);
|
||||
int nr_rlc_entity_tm_available_tx_space(nr_rlc_entity_t *entity);
|
||||
int nr_rlc_entity_tm_tx_list_occupancy(nr_rlc_entity_t *_entity);
|
||||
|
||||
#endif /* _NR_RLC_ENTITY_TM_H_ */
|
||||
|
||||
@@ -765,3 +765,9 @@ int nr_rlc_entity_um_available_tx_space(nr_rlc_entity_t *_entity)
|
||||
nr_rlc_entity_um_t *entity = (nr_rlc_entity_um_t *)_entity;
|
||||
return entity->tx_maxsize - entity->tx_size;
|
||||
}
|
||||
|
||||
int nr_rlc_entity_um_tx_list_occupancy(nr_rlc_entity_t *_entity)
|
||||
{
|
||||
nr_rlc_entity_um_t *entity = (nr_rlc_entity_um_t *)_entity;
|
||||
return entity->tx_size;
|
||||
}
|
||||
|
||||
@@ -80,5 +80,6 @@ void nr_rlc_entity_um_discard_sdu(nr_rlc_entity_t *_entity, int sdu_id);
|
||||
void nr_rlc_entity_um_reestablishment(nr_rlc_entity_t *_entity);
|
||||
void nr_rlc_entity_um_delete(nr_rlc_entity_t *entity);
|
||||
int nr_rlc_entity_um_available_tx_space(nr_rlc_entity_t *entity);
|
||||
int nr_rlc_entity_um_tx_list_occupancy(nr_rlc_entity_t *_entity);
|
||||
|
||||
#endif /* _NR_RLC_ENTITY_UM_H_ */
|
||||
|
||||
@@ -320,6 +320,25 @@ int nr_rlc_get_available_tx_space(const int ue_id, const logical_chan_id_t chann
|
||||
return ret;
|
||||
}
|
||||
|
||||
int nr_rlc_tx_list_occupancy(int ue_id, logical_chan_id_t lcid)
|
||||
{
|
||||
int ret;
|
||||
|
||||
nr_rlc_manager_lock(nr_rlc_ue_manager);
|
||||
nr_rlc_ue_t *ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, ue_id);
|
||||
nr_rlc_entity_t *rb = get_rlc_entity_from_lcid(ue, lcid);
|
||||
|
||||
if (rb != NULL) {
|
||||
ret = rb->tx_list_occupancy(rb);
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int nr_rlc_module_init(nr_rlc_op_mode_t mode)
|
||||
{
|
||||
static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
@@ -80,6 +80,8 @@ void nr_rlc_reconfigure_entity(int ue_id, int lc_id, NR_RLC_Config_t *rlc_Config
|
||||
|
||||
int nr_rlc_get_available_tx_space(const int ue_id, const logical_chan_id_t channel_idP);
|
||||
|
||||
int nr_rlc_tx_list_occupancy(int ue_id, logical_chan_id_t lcid);
|
||||
|
||||
void nr_rlc_activate_avg_time_to_tx(const int ue_id, const logical_chan_id_t channel_id, const bool is_on);
|
||||
|
||||
void nr_rlc_srb_recv_sdu(const int ue_id, const logical_chan_id_t channel_id, unsigned char *buf, int size);
|
||||
|
||||
Reference in New Issue
Block a user