Merge remote-tracking branch 'origin/oran_fhi_f_dpdk_21_plus' into integration_2025_w28 (!3504)
Improvements to the FHI for enabling further use cases These changes to the FHI were primarily thought to enable the integration of the intel ACC ( !3344 ) in parallel of the FHI. I preferred to make a separate MR because I believe this topic is orthogonal enough to be handled separately and because I wanted to bring even further improvements. The improvements that it actually brings are: - Enable compiling and running xran F release with DPDK 21+ - Enable including a BBDEV device in addition of the ethernet device for the FHI when performing EAL init, which is necessary for using the intel ACC with the FHI. - Fix an issue in usage of pkgconfig in xran E and F release. This enables to reliably build xran with the version of DPDK requested to pkgconfig while before this fix xran was always selecting the headers installed in /usr/local.
This commit is contained in:
@@ -97,11 +97,19 @@ void exit_function(const char *file, const char *function, const int line, const
|
||||
oai_exit = 1;
|
||||
|
||||
if (ru_m.rfdevice.trx_end_func) {
|
||||
if (ru_m.rfdevice.trx_get_stats_func) {
|
||||
ru_m.rfdevice.trx_get_stats_func(&ru_m.rfdevice);
|
||||
ru_m.rfdevice.trx_get_stats_func = NULL;
|
||||
}
|
||||
ru_m.rfdevice.trx_end_func(&ru_m.rfdevice);
|
||||
ru_m.rfdevice.trx_end_func = NULL;
|
||||
}
|
||||
|
||||
if (ru_m.ifdevice.trx_end_func) {
|
||||
if (ru_m.ifdevice.trx_get_stats_func) {
|
||||
ru_m.ifdevice.trx_get_stats_func(&ru_m.ifdevice);
|
||||
ru_m.ifdevice.trx_get_stats_func = NULL;
|
||||
}
|
||||
ru_m.ifdevice.trx_end_func(&ru_m.ifdevice);
|
||||
ru_m.ifdevice.trx_end_func = NULL;
|
||||
}
|
||||
@@ -363,11 +371,19 @@ int main ( int argc, char **argv )
|
||||
end_configmodule(uniqCfg);
|
||||
|
||||
if (ru->rfdevice.trx_end_func) {
|
||||
if (ru->rfdevice.trx_get_stats_func) {
|
||||
ru->rfdevice.trx_get_stats_func(&ru->rfdevice);
|
||||
ru->rfdevice.trx_get_stats_func = NULL;
|
||||
}
|
||||
ru->rfdevice.trx_end_func(&ru->rfdevice);
|
||||
ru->rfdevice.trx_end_func = NULL;
|
||||
}
|
||||
|
||||
if (ru->ifdevice.trx_end_func) {
|
||||
if (ru->ifdevice.trx_get_stats_func) {
|
||||
ru->ifdevice.trx_get_stats_func(&ru->ifdevice);
|
||||
ru->ifdevice.trx_get_stats_func = NULL;
|
||||
}
|
||||
ru->ifdevice.trx_end_func(&ru->ifdevice);
|
||||
ru->ifdevice.trx_end_func = NULL;
|
||||
}
|
||||
|
||||
@@ -1341,6 +1341,9 @@ int start_rf(RU_t *ru) {
|
||||
}
|
||||
|
||||
int stop_rf(RU_t *ru) {
|
||||
if (ru->rfdevice.trx_get_stats_func) {
|
||||
ru->rfdevice.trx_get_stats_func(&ru->rfdevice);
|
||||
}
|
||||
ru->rfdevice.trx_end_func(&ru->rfdevice);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -207,11 +207,19 @@ void exit_function(const char *file, const char *function, const int line, const
|
||||
|
||||
for (ru_id=0; ru_id<RC.nb_RU; ru_id++) {
|
||||
if (RC.ru[ru_id] && RC.ru[ru_id]->rfdevice.trx_end_func) {
|
||||
if (RC.ru[ru_id]->rfdevice.trx_get_stats_func) {
|
||||
RC.ru[ru_id]->rfdevice.trx_get_stats_func(&RC.ru[ru_id]->rfdevice);
|
||||
RC.ru[ru_id]->rfdevice.trx_get_stats_func = NULL;
|
||||
}
|
||||
RC.ru[ru_id]->rfdevice.trx_end_func(&RC.ru[ru_id]->rfdevice);
|
||||
RC.ru[ru_id]->rfdevice.trx_end_func = NULL;
|
||||
}
|
||||
|
||||
if (RC.ru[ru_id] && RC.ru[ru_id]->ifdevice.trx_end_func) {
|
||||
if (RC.ru[ru_id]->ifdevice.trx_get_stats_func) {
|
||||
RC.ru[ru_id]->ifdevice.trx_get_stats_func(&RC.ru[ru_id]->ifdevice);
|
||||
RC.ru[ru_id]->ifdevice.trx_get_stats_func = NULL;
|
||||
}
|
||||
RC.ru[ru_id]->ifdevice.trx_end_func(&RC.ru[ru_id]->ifdevice);
|
||||
RC.ru[ru_id]->ifdevice.trx_end_func = NULL;
|
||||
}
|
||||
@@ -423,11 +431,17 @@ int stop_L1(module_id_t gnb_id)
|
||||
stop_RU(RC.nb_RU);
|
||||
|
||||
/* stop trx devices, multiple carrier currently not supported by RU */
|
||||
if (ru->rfdevice.trx_get_stats_func) {
|
||||
ru->rfdevice.trx_get_stats_func(&ru->rfdevice);
|
||||
}
|
||||
if (ru->rfdevice.trx_stop_func) {
|
||||
ru->rfdevice.trx_stop_func(&ru->rfdevice);
|
||||
LOG_I(GNB_APP, "turned off RU rfdevice\n");
|
||||
}
|
||||
|
||||
if (ru->ifdevice.trx_get_stats_func) {
|
||||
ru->ifdevice.trx_get_stats_func(&ru->rfdevice);
|
||||
}
|
||||
if (ru->ifdevice.trx_stop_func) {
|
||||
ru->ifdevice.trx_stop_func(&ru->ifdevice);
|
||||
LOG_I(GNB_APP, "turned off RU ifdevice\n");
|
||||
|
||||
@@ -170,8 +170,12 @@ void exit_function(const char *file, const char *function, const int line, const
|
||||
|
||||
if (PHY_vars_UE_g && PHY_vars_UE_g[0]) {
|
||||
for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
if (PHY_vars_UE_g[0][CC_id] && PHY_vars_UE_g[0][CC_id]->rfdevice.trx_end_func)
|
||||
if (PHY_vars_UE_g[0][CC_id] && PHY_vars_UE_g[0][CC_id]->rfdevice.trx_end_func) {
|
||||
if (PHY_vars_UE_g[0][CC_id]->rfdevice.trx_get_stats_func) {
|
||||
PHY_vars_UE_g[0][CC_id]->rfdevice.trx_get_stats_func(&PHY_vars_UE_g[0][CC_id]->rfdevice);
|
||||
}
|
||||
PHY_vars_UE_g[0][CC_id]->rfdevice.trx_end_func(&PHY_vars_UE_g[0][CC_id]->rfdevice);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -591,6 +595,8 @@ int main(int argc, char **argv)
|
||||
ret = pthread_join(phy_vars->stat_thread, NULL);
|
||||
AssertFatal(ret == 0, "pthread_join error %d, errno %d (%s)\n", ret, errno, strerror(errno));
|
||||
}
|
||||
if (phy_vars->rfdevice.trx_get_stats_func)
|
||||
phy_vars->rfdevice.trx_get_stats_func(&phy_vars->rfdevice);
|
||||
if (phy_vars->rfdevice.trx_end_func)
|
||||
phy_vars->rfdevice.trx_end_func(&phy_vars->rfdevice);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user