Commit 6a34a8ad authored by Andrew Burger's avatar Andrew Burger

Adding ul_config_req cleanup and hi_dci0_req

parent 03394da3
log_config = { log_config = {
global_log_level ="info"; global_log_level ="debug";
global_log_verbosity ="medium"; global_log_verbosity ="medium";
hw_log_level ="info"; hw_log_level ="info";
hw_log_verbosity ="medium"; hw_log_verbosity ="medium";
phy_log_level ="info"; phy_log_level ="debug";
phy_log_verbosity ="medium"; phy_log_verbosity ="medium";
mac_log_level ="info"; mac_log_level ="debug";
mac_log_verbosity ="medium"; mac_log_verbosity ="medium";
rlc_log_level ="info"; rlc_log_level ="info";
rlc_log_verbosity ="medium"; rlc_log_verbosity ="medium";
......
...@@ -43,9 +43,6 @@ void configure_nfapi_pnf(char *vnf_ip_addr, ...@@ -43,9 +43,6 @@ void configure_nfapi_pnf(char *vnf_ip_addr,
UL_IND_t *UL_INFO = NULL; UL_IND_t *UL_INFO = NULL;
nfapi_ul_config_request_t* ul_config_req = NULL;
nfapi_hi_dci0_request_t* hi_dci0_req = NULL;
queue_t dl_config_req_queue; queue_t dl_config_req_queue;
queue_t tx_req_pdu_queue; queue_t tx_req_pdu_queue;
queue_t ul_config_req_queue; queue_t ul_config_req_queue;
...@@ -71,7 +68,8 @@ void fill_rx_indication_UE_MAC(module_id_t Mod_id, ...@@ -71,7 +68,8 @@ void fill_rx_indication_UE_MAC(module_id_t Mod_id,
uint8_t *ulsch_buffer, uint8_t *ulsch_buffer,
uint16_t buflen, uint16_t buflen,
uint16_t rnti, uint16_t rnti,
int index) { int index,
nfapi_ul_config_request_t *ul_config_req) {
nfapi_rx_indication_pdu_t *pdu; nfapi_rx_indication_pdu_t *pdu;
int timing_advance_update; int timing_advance_update;
...@@ -119,7 +117,8 @@ void fill_sr_indication_UE_MAC(int Mod_id, ...@@ -119,7 +117,8 @@ void fill_sr_indication_UE_MAC(int Mod_id,
int frame, int frame,
int subframe, int subframe,
UL_IND_t *UL_INFO, UL_IND_t *UL_INFO,
uint16_t rnti) { uint16_t rnti,
nfapi_ul_config_request_t *ul_config_req) {
pthread_mutex_lock(&fill_ul_mutex.sr_mutex); pthread_mutex_lock(&fill_ul_mutex.sr_mutex);
nfapi_sr_indication_t *sr_ind = &UL_INFO->sr_ind; nfapi_sr_indication_t *sr_ind = &UL_INFO->sr_ind;
...@@ -159,7 +158,8 @@ void fill_crc_indication_UE_MAC(int Mod_id, ...@@ -159,7 +158,8 @@ void fill_crc_indication_UE_MAC(int Mod_id,
UL_IND_t *UL_INFO, UL_IND_t *UL_INFO,
uint8_t crc_flag, uint8_t crc_flag,
int index, int index,
uint16_t rnti) { uint16_t rnti,
nfapi_ul_config_request_t *ul_config_req) {
pthread_mutex_lock(&fill_ul_mutex.crc_mutex); pthread_mutex_lock(&fill_ul_mutex.crc_mutex);
nfapi_crc_indication_pdu_t *pdu = nfapi_crc_indication_pdu_t *pdu =
...@@ -302,7 +302,8 @@ void fill_ulsch_harq_indication_UE_MAC( ...@@ -302,7 +302,8 @@ void fill_ulsch_harq_indication_UE_MAC(
int subframe, int subframe,
UL_IND_t *UL_INFO, UL_IND_t *UL_INFO,
nfapi_ul_config_ulsch_harq_information *harq_information, nfapi_ul_config_ulsch_harq_information *harq_information,
uint16_t rnti) { uint16_t rnti,
nfapi_ul_config_request_t *ul_config_req) {
pthread_mutex_lock(&fill_ul_mutex.harq_mutex); pthread_mutex_lock(&fill_ul_mutex.harq_mutex);
nfapi_harq_indication_pdu_t *pdu = nfapi_harq_indication_pdu_t *pdu =
...@@ -344,7 +345,8 @@ void fill_uci_harq_indication_UE_MAC(int Mod_id, ...@@ -344,7 +345,8 @@ void fill_uci_harq_indication_UE_MAC(int Mod_id,
int subframe, int subframe,
UL_IND_t *UL_INFO, UL_IND_t *UL_INFO,
nfapi_ul_config_harq_information *harq_information, nfapi_ul_config_harq_information *harq_information,
uint16_t rnti) { uint16_t rnti,
nfapi_ul_config_request_t *ul_config_req) {
pthread_mutex_lock(&fill_ul_mutex.harq_mutex); pthread_mutex_lock(&fill_ul_mutex.harq_mutex);
nfapi_harq_indication_t *ind = &UL_INFO->harq_ind; nfapi_harq_indication_t *ind = &UL_INFO->harq_ind;
...@@ -902,9 +904,8 @@ void hi_dci0_req_UE_MAC(int sfn, ...@@ -902,9 +904,8 @@ void hi_dci0_req_UE_MAC(int sfn,
// The following set of memcpy functions should be getting called as callback // The following set of memcpy functions should be getting called as callback
// functions from pnf_p7_subframe_ind. // functions from pnf_p7_subframe_ind.
int memcpy_dl_config_req(L1_rxtx_proc_t *proc, int memcpy_dl_config_req(L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t *pnf_p7, nfapi_dl_config_request_t *req)
nfapi_pnf_p7_config_t *pnf_p7, {
nfapi_dl_config_request_t *req) {
nfapi_dl_config_request_t *p = malloc(sizeof(nfapi_dl_config_request_t)); nfapi_dl_config_request_t *p = malloc(sizeof(nfapi_dl_config_request_t));
...@@ -957,12 +958,9 @@ int memcpy_ul_config_req (L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t* pnf_p7, n ...@@ -957,12 +958,9 @@ int memcpy_ul_config_req (L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t* pnf_p7, n
req->ul_config_request_body.ul_config_pdu_list[i]; req->ul_config_request_body.ul_config_pdu_list[i];
} }
#if 0 // TODO not using queue here yet
if (!put_queue(&ul_config_req_queue, p)) { if (!put_queue(&ul_config_req_queue, p)) {
free(p); free(p);
} }
#endif
ul_config_req = p;
return 0; return 0;
} }
...@@ -984,6 +982,7 @@ int memcpy_tx_req(nfapi_pnf_p7_config_t *pnf_p7, nfapi_tx_request_t *req) { ...@@ -984,6 +982,7 @@ int memcpy_tx_req(nfapi_pnf_p7_config_t *pnf_p7, nfapi_tx_request_t *req) {
} }
} }
} }
if (!put_queue(&tx_req_pdu_queue, p)) { if (!put_queue(&tx_req_pdu_queue, p)) {
free(p); free(p);
} }
...@@ -991,9 +990,8 @@ int memcpy_tx_req(nfapi_pnf_p7_config_t *pnf_p7, nfapi_tx_request_t *req) { ...@@ -991,9 +990,8 @@ int memcpy_tx_req(nfapi_pnf_p7_config_t *pnf_p7, nfapi_tx_request_t *req) {
return 0; return 0;
} }
int memcpy_hi_dci0_req (L1_rxtx_proc_t *proc, int memcpy_hi_dci0_req (L1_rxtx_proc_t *proc, nfapi_pnf_p7_config_t* pnf_p7, nfapi_hi_dci0_request_t* req)
nfapi_pnf_p7_config_t* pnf_p7, {
nfapi_hi_dci0_request_t* req) {
nfapi_hi_dci0_request_t *p = (nfapi_hi_dci0_request_t *)malloc(sizeof(nfapi_hi_dci0_request_t)); nfapi_hi_dci0_request_t *p = (nfapi_hi_dci0_request_t *)malloc(sizeof(nfapi_hi_dci0_request_t));
//if(req!=0){ //if(req!=0){
...@@ -1023,12 +1021,9 @@ int memcpy_hi_dci0_req (L1_rxtx_proc_t *proc, ...@@ -1023,12 +1021,9 @@ int memcpy_hi_dci0_req (L1_rxtx_proc_t *proc,
// UE_mac_inst[Mod_id].p->hi_dci0_request_body.hi_dci0_pdu_list[i].pdu_type); // UE_mac_inst[Mod_id].p->hi_dci0_request_body.hi_dci0_pdu_list[i].pdu_type);
} }
#if 0 // TODO not using queue here yet
if (!put_queue(&hi_dci0_req_queue, p)) { if (!put_queue(&hi_dci0_req_queue, p)) {
free(p); free(p);
} }
#endif
hi_dci0_req = p;
return 0; return 0;
} }
...@@ -1178,8 +1173,36 @@ void *ue_standalone_pnf_task(void *context) ...@@ -1178,8 +1173,36 @@ void *ue_standalone_pnf_task(void *context)
break; break;
} }
case NFAPI_HI_DCI0_REQUEST: case NFAPI_HI_DCI0_REQUEST:
{
nfapi_hi_dci0_request_t hi_dci0_req;
// lock this hi_dci0_req
if (nfapi_p7_message_unpack((void *)buffer, len, &hi_dci0_req,
sizeof(hi_dci0_req), NULL) < 0)
{
LOG_E(MAC, "Message hi_dci0_req failed to unpack\n");
}
else
{
// check to see if hi_dci0_req is null
memcpy_hi_dci0_req(NULL, NULL, &hi_dci0_req);
}
break; break;
}
case NFAPI_UL_CONFIG_REQUEST:
{
nfapi_ul_config_request_t ul_config_req;
// lock this ul_config_req
if (nfapi_p7_message_unpack((void *)buffer, len, &ul_config_req,
sizeof(ul_config_req), NULL) < 0)
{
LOG_E(MAC, "Message ul_config_req failed to unpack\n");
}
else
{
// check to see if ul_config_req is null
memcpy_ul_config_req(NULL, NULL, &ul_config_req);
}
}
default: default:
LOG_E(MAC, "Case Statement has no corresponding nfapi message\n"); LOG_E(MAC, "Case Statement has no corresponding nfapi message\n");
break; break;
...@@ -1188,8 +1211,8 @@ void *ue_standalone_pnf_task(void *context) ...@@ -1188,8 +1211,8 @@ void *ue_standalone_pnf_task(void *context)
} }
} }
void send_standalone_msg(UL_IND_t *UL, nfapi_message_id_e msg_type) void send_standalone_msg(UL_IND_t * UL, nfapi_message_id_e msg_type)
{ {
int encoded_size = -1; int encoded_size = -1;
char buffer[1024]; char buffer[1024];
switch (msg_type) switch (msg_type)
...@@ -1225,91 +1248,105 @@ void send_standalone_msg(UL_IND_t *UL, nfapi_message_id_e msg_type) ...@@ -1225,91 +1248,105 @@ void send_standalone_msg(UL_IND_t *UL, nfapi_message_id_e msg_type)
LOG_E(MAC, "Send Proxy UE failed\n"); LOG_E(MAC, "Send Proxy UE failed\n");
return; return;
} }
} }
void send_standalone_dummy() void send_standalone_dummy()
{ {
static const uint16_t dummy[] = {0, 0}; static const uint16_t dummy[] = {0, 0};
if (send(ue_sock_descriptor, dummy, sizeof(dummy), 0) < 0) if (send(ue_sock_descriptor, dummy, sizeof(dummy), 0) < 0)
{ {
LOG_E(MAC, "send dummy to OAI UE failed: %s\n", strerror(errno)); LOG_E(MAC, "send dummy to OAI UE failed: %s\n", strerror(errno));
return; return;
} }
} }
/* Dummy functions*/ /* Dummy functions*/
void handle_nfapi_hi_dci0_dci_pdu( void handle_nfapi_hi_dci0_dci_pdu(
PHY_VARS_eNB *eNB, PHY_VARS_eNB * eNB,
int frame, int frame,
int subframe, int subframe,
L1_rxtx_proc_t *proc, L1_rxtx_proc_t *proc,
nfapi_hi_dci0_request_pdu_t *hi_dci0_config_pdu) { nfapi_hi_dci0_request_pdu_t *hi_dci0_config_pdu)
} {
}
void handle_nfapi_hi_dci0_hi_pdu( void handle_nfapi_hi_dci0_hi_pdu(
PHY_VARS_eNB *eNB, PHY_VARS_eNB * eNB,
int frame, int frame,
int subframe, int subframe,
L1_rxtx_proc_t *proc, L1_rxtx_proc_t *proc,
nfapi_hi_dci0_request_pdu_t *hi_dci0_config_pdu) { nfapi_hi_dci0_request_pdu_t *hi_dci0_config_pdu)
} {
}
void handle_nfapi_dci_dl_pdu(PHY_VARS_eNB *eNB, void handle_nfapi_dci_dl_pdu(PHY_VARS_eNB * eNB,
int frame, int frame,
int subframe, int subframe,
L1_rxtx_proc_t *proc, L1_rxtx_proc_t *proc,
nfapi_dl_config_request_pdu_t *dl_config_pdu) { nfapi_dl_config_request_pdu_t *dl_config_pdu)
} {
}
void handle_nfapi_bch_pdu(PHY_VARS_eNB *eNB, void handle_nfapi_bch_pdu(PHY_VARS_eNB * eNB,
L1_rxtx_proc_t *proc, L1_rxtx_proc_t * proc,
nfapi_dl_config_request_pdu_t *dl_config_pdu, nfapi_dl_config_request_pdu_t * dl_config_pdu,
uint8_t *sdu) { uint8_t * sdu)
} {
}
void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB, void handle_nfapi_dlsch_pdu(PHY_VARS_eNB * eNB,
int frame, int frame,
int subframe, int subframe,
L1_rxtx_proc_t *proc, L1_rxtx_proc_t *proc,
nfapi_dl_config_request_pdu_t *dl_config_pdu, nfapi_dl_config_request_pdu_t *dl_config_pdu,
uint8_t codeword_index, uint8_t codeword_index,
uint8_t *sdu) { uint8_t *sdu)
} {
}
void handle_nfapi_ul_pdu(PHY_VARS_eNB *eNB, void handle_nfapi_ul_pdu(PHY_VARS_eNB * eNB,
L1_rxtx_proc_t *proc, L1_rxtx_proc_t * proc,
nfapi_ul_config_request_pdu_t *ul_config_pdu, nfapi_ul_config_request_pdu_t * ul_config_pdu,
uint16_t frame, uint16_t frame,
uint8_t subframe, uint8_t subframe,
uint8_t srs_present) { uint8_t srs_present)
} {
void handle_nfapi_mch_pdu(PHY_VARS_eNB *eNB, }
L1_rxtx_proc_t *proc, void handle_nfapi_mch_pdu(PHY_VARS_eNB * eNB,
nfapi_dl_config_request_pdu_t *dl_config_pdu, L1_rxtx_proc_t * proc,
uint8_t *sdu) { nfapi_dl_config_request_pdu_t * dl_config_pdu,
} uint8_t * sdu)
{
}
void phy_config_request(PHY_Config_t *phy_config) { void phy_config_request(PHY_Config_t * phy_config)
} {
}
void phy_config_update_sib2_request(PHY_Config_t *phy_config) { void phy_config_update_sib2_request(PHY_Config_t * phy_config)
} {
}
void phy_config_update_sib13_request(PHY_Config_t *phy_config) { void phy_config_update_sib13_request(PHY_Config_t * phy_config)
} {
}
uint32_t from_earfcn(int eutra_bandP, uint32_t dl_earfcn) { uint32_t from_earfcn(int eutra_bandP, uint32_t dl_earfcn)
{
return (0); return (0);
} }
int32_t get_uldl_offset(int eutra_bandP) { int32_t get_uldl_offset(int eutra_bandP)
{
return (0); return (0);
} }
int l1_north_init_eNB(void) { int l1_north_init_eNB(void)
{
return 0; return 0;
} }
void init_eNB_afterRU(void) { void init_eNB_afterRU(void)
} {
}
...@@ -1029,8 +1029,6 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg) ...@@ -1029,8 +1029,6 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg)
proc->subframe_rx = proc->sub_frame_start; proc->subframe_rx = proc->sub_frame_start;
// Initializations for nfapi-L2-emulator mode // Initializations for nfapi-L2-emulator mode
ul_config_req = NULL;
hi_dci0_req = NULL;
sync_var = 0; sync_var = 0;
//PANOS: CAREFUL HERE! //PANOS: CAREFUL HERE!
...@@ -1059,6 +1057,8 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg) ...@@ -1059,6 +1057,8 @@ static void *UE_phy_stub_standalone_pnf_task(void *arg)
nfapi_dl_config_request_t *dl_config_req = get_queue(&dl_config_req_queue); nfapi_dl_config_request_t *dl_config_req = get_queue(&dl_config_req_queue);
nfapi_tx_request_pdu_t *tx_request_pdu_list = get_queue(&tx_req_pdu_queue); nfapi_tx_request_pdu_t *tx_request_pdu_list = get_queue(&tx_req_pdu_queue);
nfapi_ul_config_request_t *ul_config_req = get_queue(&ul_config_req_queue);
nfapi_hi_dci0_request_t *hi_dci0_req = get_queue(&hi_dci0_req_queue);
if ((dl_config_req != NULL) != (tx_request_pdu_list != NULL)) { if ((dl_config_req != NULL) != (tx_request_pdu_list != NULL)) {
uint64_t start = clock_usec(); uint64_t start = clock_usec();
uint64_t deadline = start + 10000; uint64_t deadline = start + 10000;
...@@ -1786,6 +1786,7 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) ...@@ -1786,6 +1786,7 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg)
static void *UE_phy_stub_thread_rxn_txnp4(void *arg) static void *UE_phy_stub_thread_rxn_txnp4(void *arg)
{ {
#if 0
thread_top_init("UE_phy_stub_thread_rxn_txnp4",1,870000L,1000000L,1000000L); thread_top_init("UE_phy_stub_thread_rxn_txnp4",1,870000L,1000000L,1000000L);
module_id_t Mod_id = 0; module_id_t Mod_id = 0;
static __thread int UE_thread_rxtx_retval; static __thread int UE_thread_rxtx_retval;
...@@ -1929,10 +1930,10 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg) ...@@ -1929,10 +1930,10 @@ static void *UE_phy_stub_thread_rxn_txnp4(void *arg)
phy_procedures_UE_SL_RX(UE,proc); phy_procedures_UE_SL_RX(UE,proc);
} }
#endif // disabled
// thread finished // thread finished
free(arg); free(arg);
return &UE_thread_rxtx_retval; return NULL; //return &UE_thread_rxtx_retval;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment