[FHI72] Set PRACH offset as optional parameter
If the PRACH offset is set explicitely via config file, then its value will be used. Otherwise, eAxC_offset = max(Nrx,Ntx). Co-authored-by: Robert Schmidt <robert.schmidt@openairinterface.org>
This commit is contained in:
co-authored by
Robert Schmidt
parent
3c6644134c
commit
7a0311929d
@@ -777,8 +777,7 @@ static bool set_fh_prach_config(void *mplane_api,
|
|||||||
const uint32_t max_num_ant,
|
const uint32_t max_num_ant,
|
||||||
const paramdef_t *prachp,
|
const paramdef_t *prachp,
|
||||||
int nprach,
|
int nprach,
|
||||||
struct xran_prach_config *prach_config,
|
struct xran_prach_config *prach_config)
|
||||||
bool liteon_prach_eAxC_offset)
|
|
||||||
{
|
{
|
||||||
const split7_config_t *s7cfg = &oai0->split7;
|
const split7_config_t *s7cfg = &oai0->split7;
|
||||||
|
|
||||||
@@ -814,11 +813,8 @@ static bool set_fh_prach_config(void *mplane_api,
|
|||||||
xran_mplane_t *xran_mplane = (xran_mplane_t *)mplane_api;
|
xran_mplane_t *xran_mplane = (xran_mplane_t *)mplane_api;
|
||||||
prach_config->eAxC_offset = xran_mplane->prach_offset;
|
prach_config->eAxC_offset = xran_mplane->prach_offset;
|
||||||
#else
|
#else
|
||||||
uint8_t offset = *gpd(prachp, nprach, ORAN_PRACH_CONFIG_EAXC_OFFSET)->u8ptr;
|
const paramdef_t *pd = gpd(prachp, nprach, ORAN_PRACH_CONFIG_EAXC_OFFSET);
|
||||||
if (liteon_prach_eAxC_offset)
|
prach_config->eAxC_offset = pd->paramflags & PARAMFLAG_PARAMSET ? *pd->u8ptr : max_num_ant;
|
||||||
prach_config->eAxC_offset = offset;
|
|
||||||
else
|
|
||||||
prach_config->eAxC_offset = (offset != 0) ? offset : max_num_ant;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
g_kbar = *gpd(prachp, nprach, ORAN_PRACH_CONFIG_KBAR)->uptr;
|
g_kbar = *gpd(prachp, nprach, ORAN_PRACH_CONFIG_KBAR)->uptr;
|
||||||
@@ -964,13 +960,11 @@ static bool set_fh_config(void *mplane_api, int ru_idx, int num_rus, enum xran_c
|
|||||||
fh_config->prachEnable = 1; // enable PRACH
|
fh_config->prachEnable = 1; // enable PRACH
|
||||||
fh_config->srsEnable = 0; // enable SRS; used only if XRAN_CATEGORY_B
|
fh_config->srsEnable = 0; // enable SRS; used only if XRAN_CATEGORY_B
|
||||||
// For LiteOn E release, no need to take care of prach eAxC_offset. xran lib is hacked to handle it.
|
// For LiteOn E release, no need to take care of prach eAxC_offset. xran lib is hacked to handle it.
|
||||||
bool liteon_prach_eAxC_offset = false;
|
|
||||||
#if defined F_RELEASE
|
#if defined F_RELEASE
|
||||||
fh_config->srsEnableCp = 0; // enable SRS CP; used only if XRAN_CATEGORY_B
|
fh_config->srsEnableCp = 0; // enable SRS CP; used only if XRAN_CATEGORY_B
|
||||||
fh_config->SrsDelaySym = 0; // number of SRS delay symbols; used only if XRAN_CATEGORY_B
|
fh_config->SrsDelaySym = 0; // number of SRS delay symbols; used only if XRAN_CATEGORY_B
|
||||||
fh_config->RunSlotPrbMapBySymbolEnable = *gpd(fhp, nfh, ORAN_CONFIG_RunSlotPrbMapBySymbol)->uptr; // enable RunSlotPrbMapBySymbol
|
fh_config->RunSlotPrbMapBySymbolEnable = *gpd(fhp, nfh, ORAN_CONFIG_RunSlotPrbMapBySymbol)->uptr; // enable RunSlotPrbMapBySymbol
|
||||||
fh_config->LiteOnIgnoreUPSectionIdEnable = *gpd(fhp, nfh, ORAN_CONFIG_LiteOnIgnoreUPSectionId)->uptr; // enable LiteOnIgnoreUPSectionId
|
fh_config->LiteOnIgnoreUPSectionIdEnable = *gpd(fhp, nfh, ORAN_CONFIG_LiteOnIgnoreUPSectionId)->uptr; // enable LiteOnIgnoreUPSectionId
|
||||||
liteon_prach_eAxC_offset = fh_config->LiteOnIgnoreUPSectionIdEnable;
|
|
||||||
#endif
|
#endif
|
||||||
fh_config->puschMaskEnable = 0; // enable PUSCH mask; only used if id = O_RU
|
fh_config->puschMaskEnable = 0; // enable PUSCH mask; only used if id = O_RU
|
||||||
fh_config->puschMaskSlot = 0; // specific which slot PUSCH channel masked; only used if id = O_RU
|
fh_config->puschMaskSlot = 0; // specific which slot PUSCH channel masked; only used if id = O_RU
|
||||||
@@ -982,7 +976,7 @@ static bool set_fh_config(void *mplane_api, int ru_idx, int num_rus, enum xran_c
|
|||||||
fh_config->GPS_Alpha = 0; // refers to alpha as defined in section 9.7.2 of ORAN spec. this value should be alpha*(1/1.2288ns), range 0 - 1e7 (ns); offset_nsec = (pConf->GPS_Beta - offset_sec * 100) * 1e7 + pConf->GPS_Alpha
|
fh_config->GPS_Alpha = 0; // refers to alpha as defined in section 9.7.2 of ORAN spec. this value should be alpha*(1/1.2288ns), range 0 - 1e7 (ns); offset_nsec = (pConf->GPS_Beta - offset_sec * 100) * 1e7 + pConf->GPS_Alpha
|
||||||
fh_config->GPS_Beta = 0; // beta value as defined in section 9.7.2 of ORAN spec. range -32767 ~ +32767; offset_sec = pConf->GPS_Beta / 100
|
fh_config->GPS_Beta = 0; // beta value as defined in section 9.7.2 of ORAN spec. range -32767 ~ +32767; offset_sec = pConf->GPS_Beta / 100
|
||||||
|
|
||||||
if (!set_fh_prach_config(mplane_api, oai0, fh_config->neAxc, prachp, nprach, &fh_config->prach_conf, liteon_prach_eAxC_offset))
|
if (!set_fh_prach_config(mplane_api, oai0, fh_config->neAxc, prachp, nprach, &fh_config->prach_conf))
|
||||||
return false;
|
return false;
|
||||||
/* SRS only used if XRAN_CATEGORY_B
|
/* SRS only used if XRAN_CATEGORY_B
|
||||||
Note: srs_config->eAxC_offset >= prach_config->eAxC_offset + PRACH */
|
Note: srs_config->eAxC_offset >= prach_config->eAxC_offset + PRACH */
|
||||||
|
|||||||
@@ -145,7 +145,7 @@
|
|||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
#define ORAN_PRACH_DESC {\
|
#define ORAN_PRACH_DESC {\
|
||||||
{ORAN_PRACH_CONFIG_EAXC_OFFSET, "RU's eAxC offset for PRACH\n", PARAMFLAG_MANDATORY, .u8ptr=NULL, .defuintval=0, TYPE_UINT8, 0}, \
|
{ORAN_PRACH_CONFIG_EAXC_OFFSET, "RU's eAxC offset for PRACH\n", 0, .u8ptr=NULL, .defuintval=0, TYPE_UINT8, 0}, \
|
||||||
{ORAN_PRACH_CONFIG_KBAR, "PRACH guard interval\n", 0, .uptr=NULL, .defuintval=4, TYPE_UINT, 0}, \
|
{ORAN_PRACH_CONFIG_KBAR, "PRACH guard interval\n", 0, .uptr=NULL, .defuintval=4, TYPE_UINT, 0}, \
|
||||||
}
|
}
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|||||||
Reference in New Issue
Block a user