fix error of grouping UE to free list for phy layer and ue to free list for fapi
This commit is contained in:
@@ -888,30 +888,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
||||
pdcp_remove_UE(&ctxt);
|
||||
}
|
||||
|
||||
/* Note: This should not be done in the MAC! */
|
||||
/*
|
||||
for (int ii=0; ii<MAX_MOBILES_PER_ENB; ii++) {
|
||||
LTE_eNB_ULSCH_t *ulsch = RC.eNB[module_idP][CC_id]->ulsch[ii];
|
||||
|
||||
if((ulsch != NULL) && (ulsch->rnti == rnti)) {
|
||||
void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
|
||||
LOG_I(MAC, "clean_eNb_ulsch UE %x \n", rnti);
|
||||
clean_eNb_ulsch(ulsch);
|
||||
}
|
||||
}
|
||||
|
||||
for (int ii=0; ii<MAX_MOBILES_PER_ENB; ii++) {
|
||||
LTE_eNB_DLSCH_t *dlsch = RC.eNB[module_idP][CC_id]->dlsch[ii][0];
|
||||
|
||||
if((dlsch != NULL) && (dlsch->rnti == rnti)) {
|
||||
void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
|
||||
LOG_I(MAC, "clean_eNb_dlsch UE %x \n", rnti);
|
||||
clean_eNb_dlsch(dlsch);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
int id;
|
||||
int id;
|
||||
|
||||
// clean ULSCH entries for rnti
|
||||
id = find_ulsch(rnti,RC.eNB[module_idP][CC_id],SEARCH_EXIST);
|
||||
|
||||
@@ -466,11 +466,12 @@ void generate_Msg2(module_id_t module_idP,
|
||||
} else {
|
||||
if ((ra->Msg2_frame == frameP) && (ra->Msg2_subframe == subframeP)) {
|
||||
LOG_I(MAC,
|
||||
"[eNB %d] CC_id %d Frame %d, subframeP %d: Generating RAR DCI, state %s\n",
|
||||
"[eNB %d] CC_id %d Frame %d, subframeP %d: Generating RAR DCI for rnti %x, state %s\n",
|
||||
module_idP,
|
||||
CC_idP,
|
||||
frameP,
|
||||
subframeP,
|
||||
ra->RA_rnti,
|
||||
era_text[ra->eRA_state]);
|
||||
// Allocate 4 PRBS starting in RB 0
|
||||
first_rb = 0;
|
||||
|
||||
@@ -506,7 +506,7 @@ typedef struct {
|
||||
|
||||
/*!\brief RA process state*/
|
||||
typedef enum { IDLE = 0, MSG2, WAITMSG3, MSG4, WAITMSG4ACK, MSGCRNTI, MSGCRNTI_ACK } eRA_state;
|
||||
static const char *const era_text[] = {"IDLE", "Ms2", "WAITMSG3", "WAITMSG4ACK", "MSGCRNTI", "MSGCRNTIACK"};
|
||||
static const char *const era_text[] = {"IDLE", "Msg2", "WAITMSG3", "WAITMSG4ACK", "MSGCRNTI", "MSGCRNTIACK"};
|
||||
|
||||
/*!\brief UE DLSCH scheduling states*/
|
||||
typedef enum { S_DL_NONE = 0, S_DL_SCHEDULED } UE_DLSCH_STATUS;
|
||||
|
||||
+12
-15
@@ -98,6 +98,8 @@
|
||||
|
||||
#include "SIMULATION/TOOLS/sim.h" // for taus
|
||||
|
||||
#include "openair1/PHY/LTE_TRANSPORT/transport_proto.h"
|
||||
|
||||
#define ASN_MAX_ENCODE_SIZE 4096
|
||||
#define NUMBEROF_DRBS_TOBE_ADDED 1
|
||||
static int encode_CG_ConfigInfo(char *buffer,int buffer_size,rrc_eNB_ue_context_t *const ue_context_pP,int *enc_size);
|
||||
@@ -878,7 +880,7 @@ rrc_eNB_free_UE(
|
||||
void put_UE_in_freelist(module_id_t mod_id, rnti_t rnti, bool removeFlag) {
|
||||
eNB_MAC_INST *eNB_MAC = RC.mac[mod_id];
|
||||
pthread_mutex_lock(&lock_ue_freelist);
|
||||
LOG_I(PHY,"add ue %x in free list, context flag: %d\n", rnti, removeFlag);
|
||||
LOG_I(PHY, "adding ue %x in UE to free list, context flag: %d\n", rnti, removeFlag);
|
||||
int i;
|
||||
for (i=0; i < sizeofArray(eNB_MAC->UE_free_ctrl); i++)
|
||||
if (eNB_MAC->UE_free_ctrl[i].rnti == 0)
|
||||
@@ -888,24 +890,21 @@ void put_UE_in_freelist(module_id_t mod_id, rnti_t rnti, bool removeFlag) {
|
||||
pthread_mutex_unlock(&lock_ue_freelist);
|
||||
return;
|
||||
}
|
||||
if (eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs >= NFAPI_RELEASE_MAX_RNTI) {
|
||||
LOG_E(PHY, "List of UE to release is full\n");
|
||||
pthread_mutex_unlock(&lock_ue_freelist);
|
||||
return;
|
||||
}
|
||||
eNB_MAC->UE_free_ctrl[i].rnti = rnti;
|
||||
eNB_MAC->UE_free_ctrl[i].removeContextFlg = removeFlag;
|
||||
eNB_MAC->UE_free_ctrl[i].raFlag = 0;
|
||||
eNB_MAC->UE_release_req.ue_release_request_body.ue_release_request_TLVs_list[eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs].rnti = rnti;
|
||||
eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs++;
|
||||
if (eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs < NFAPI_RELEASE_MAX_RNTI) {
|
||||
eNB_MAC->UE_release_req.ue_release_request_body
|
||||
.ue_release_request_TLVs_list[eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs]
|
||||
.rnti = rnti;
|
||||
eNB_MAC->UE_release_req.ue_release_request_body.number_of_TLVs++;
|
||||
} else {
|
||||
LOG_E(PHY, "fapi List of UE to release is full\n");
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&lock_ue_freelist);
|
||||
}
|
||||
|
||||
extern int16_t find_dlsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type);
|
||||
extern int16_t find_ulsch(uint16_t rnti, PHY_VARS_eNB *eNB,find_type_t type);
|
||||
extern void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
|
||||
extern void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
|
||||
|
||||
void release_UE_in_freeList(module_id_t mod_id) {
|
||||
PHY_VARS_eNB *eNB_PHY = NULL;
|
||||
eNB_MAC_INST *eNB_MAC = RC.mac[mod_id];
|
||||
@@ -923,13 +922,11 @@ void release_UE_in_freeList(module_id_t mod_id) {
|
||||
int id;
|
||||
// clean ULSCH entries for rnti
|
||||
id = find_ulsch(rnti, eNB_PHY, eNB_MAC->UE_free_ctrl[ue_num].raFlag ? SEARCH_EXIST_RA : SEARCH_EXIST);
|
||||
|
||||
if (id >= 0)
|
||||
clean_eNb_ulsch(eNB_PHY->ulsch[id]);
|
||||
|
||||
// clean DLSCH entries for rnti
|
||||
id = find_dlsch(rnti, eNB_PHY, eNB_MAC->UE_free_ctrl[ue_num].raFlag ? SEARCH_EXIST_RA : SEARCH_EXIST);
|
||||
|
||||
if (id >= 0)
|
||||
clean_eNb_dlsch(eNB_PHY->dlsch[id][0]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user