X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fapi_5g%2Fsource%2Fframework%2Fworkers%2Fnr5g_fapi_phy2mac_thread.c;h=9e53eb64b625eab3fdd4e9cabf8f8c4bc1c8f930;hb=HEAD;hp=c663767274797fa119c3948719db19fd6660ad8a;hpb=70d9d920dd4e575f085f1f1a9050fefd1c10e127;p=o-du%2Fphy.git diff --git a/fapi_5g/source/framework/workers/nr5g_fapi_phy2mac_thread.c b/fapi_5g/source/framework/workers/nr5g_fapi_phy2mac_thread.c index c663767..9e53eb6 100644 --- a/fapi_5g/source/framework/workers/nr5g_fapi_phy2mac_thread.c +++ b/fapi_5g/source/framework/workers/nr5g_fapi_phy2mac_thread.c @@ -1,6 +1,6 @@ /****************************************************************************** * -* Copyright (c) 2019 Intel. +* Copyright (c) 2021 Intel. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -37,8 +37,6 @@ void *nr5g_fapi_phy2mac_thread_func( void *config) { - cpu_set_t cpuset; - pthread_t thread; PMAC2PHY_QUEUE_EL p_msg_list = NULL; p_nr5g_fapi_phy_ctx_t p_phy_ctx = (p_nr5g_fapi_phy_ctx_t) config; @@ -46,20 +44,16 @@ void *nr5g_fapi_phy2mac_thread_func( "Core: %d\n", __func__, pthread_self(), p_phy_ctx->phy2mac_worker_core_id)); - thread = p_phy_ctx->phy2mac_tid = pthread_self(); - CPU_ZERO(&cpuset); - CPU_SET(p_phy_ctx->phy2mac_worker_core_id, &cpuset); - pthread_setaffinity_np(thread, sizeof(cpu_set_t), &cpuset); + nr5g_fapi_init_thread(p_phy_ctx->phy2mac_worker_core_id); nr5g_fapi_fapi2mac_init_api_list(); - usleep(1000); while (!p_phy_ctx->process_exit) { p_msg_list = nr5g_fapi_fapi2phy_wls_recv(); if (p_msg_list) - nr5g_fapi_phy2mac_api_recv_handler(config, p_msg_list); + nr5g_fapi_phy2mac_api_recv_handler(false, config, p_msg_list); - nr5g_fapi_fapi2mac_send_api_list(); + nr5g_fapi_fapi2mac_send_api_list(false); } pthread_exit(NULL); } @@ -77,16 +71,18 @@ void *nr5g_fapi_phy2mac_thread_func( **/ //------------------------------------------------------------------------------ void nr5g_fapi_phy2mac_api_recv_handler( + bool is_urllc, void *config, PMAC2PHY_QUEUE_EL p_msg_list) { PMAC2PHY_QUEUE_EL p_curr_msg; PL1L2MessageHdr p_msg_header = NULL; uint64_t start_tick = __rdtsc(); - + fapi_api_stored_vendor_queue_elems vendor_extension_elems; NR5G_FAPI_LOG(TRACE_LOG, ("[PHY2MAC] %s:", __func__)); - nr5g_fapi_message_header((p_nr5g_fapi_phy_ctx_t) config); + memset(&vendor_extension_elems, 0, sizeof(vendor_extension_elems)); + nr5g_fapi_message_header((p_nr5g_fapi_phy_ctx_t) config, is_urllc); p_curr_msg = (PMAC2PHY_QUEUE_EL) p_msg_list; while (p_curr_msg) { @@ -97,14 +93,14 @@ void nr5g_fapi_phy2mac_api_recv_handler( case MSG_TYPE_PHY_DL_IQ_SAMPLES: { nr5g_fapi_dl_iq_samples_response((p_nr5g_fapi_phy_ctx_t) - config, (PADD_REMOVE_BBU_CORES) p_msg_header); + config, (PADD_REMOVE_BBU_CORES_NR5G) p_msg_header); } break; case MSG_TYPE_PHY_UL_IQ_SAMPLES: { nr5g_fapi_ul_iq_samples_response((p_nr5g_fapi_phy_ctx_t) - config, (PADD_REMOVE_BBU_CORES) p_msg_header); + config, (PADD_REMOVE_BBU_CORES_NR5G) p_msg_header); } break; #endif @@ -140,48 +136,61 @@ void nr5g_fapi_phy2mac_api_recv_handler( /* P7 Message Processing */ case MSG_TYPE_PHY_RX_ULSCH_IND: { - nr5g_fapi_rx_data_indication((p_nr5g_fapi_phy_ctx_t) config, + nr5g_fapi_rx_data_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, + &vendor_extension_elems, (PRXULSCHIndicationStruct) p_msg_header); } break; case MSG_TYPE_PHY_RX_ULSCH_UCI_IND: { - //Not Supported + nr5g_fapi_rx_data_uci_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, + (PRXULSCHUCIIndicationStruct) p_msg_header); } break; case MSG_TYPE_PHY_CRC_IND: { - nr5g_fapi_crc_indication((p_nr5g_fapi_phy_ctx_t) config, + nr5g_fapi_crc_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, + &vendor_extension_elems, (PCRCIndicationStruct) p_msg_header); } break; case MSG_TYPE_PHY_UCI_IND: { - nr5g_fapi_uci_indication((p_nr5g_fapi_phy_ctx_t) config, + nr5g_fapi_uci_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, + &vendor_extension_elems, (PRXUCIIndicationStruct) p_msg_header); } break; case MSG_TYPE_PHY_RX_RACH_IND: { - nr5g_fapi_rach_indication((p_nr5g_fapi_phy_ctx_t) config, + nr5g_fapi_rach_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, (PRXRACHIndicationStruct) p_msg_header); } break; case MSG_TYPE_PHY_RX_SRS_IND: { - nr5g_fapi_srs_indication((p_nr5g_fapi_phy_ctx_t) config, + nr5g_fapi_srs_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, + &vendor_extension_elems, (PRXSRSIndicationStruct) p_msg_header); } break; case MSG_TYPE_PHY_SLOT_IND: { - nr5g_fapi_slot_indication((p_nr5g_fapi_phy_ctx_t) config, + nr5g_fapi_slot_indication(is_urllc, + (p_nr5g_fapi_phy_ctx_t) config, + &vendor_extension_elems, (PSlotIndicationStruct) p_msg_header); nr5g_fapi_statistic_info_set_all(); } @@ -193,12 +202,14 @@ void nr5g_fapi_phy2mac_api_recv_handler( break; default: - printf("%s: Unknown Message type: %x\n", __func__, - p_msg_header->nMessageType); + NR5G_FAPI_LOG(ERROR_LOG, ("[PHY2MAC THREAD] Received Unknown Message: [nMessageType = 0x%x]", + p_msg_header->nMessageType)); break; } p_curr_msg = p_curr_msg->pNext; } + nr5g_fapi_proc_vendor_p7_msgs_move_to_api_list(is_urllc, &vendor_extension_elems); + tick_total_parse_per_tti_ul += __rdtsc() - start_tick; }