Merge remote-tracking branch 'origin/NTN_FR2_bands' into integration_2026_w11 (!3414)

Added NTN-FR2 FDD bands defined in release 18 in Ka-band range

* NTN-FR2 bands 510, 511, 512 added. TS 38.101-5 v 18.9 defines these 3 FR2-FDD
  bands for NTN operation.
* These bands are defined in Ka band range (17.3Ghz - 31Ghz).
* Tested using the added conf files using RFSIM and GEO configuration.
* There were some inconsistencies observed when testing with RFSimulator before UE
  Syncs to the gNB in terms of samples being written for FR2 configurations. Once
  the UE syncs, the inconsistencies disappear.
* this is the problem - UE writes incorrect number of samples and gNB complains
  about getting samples in past
* The above inconsistencies were also fixed in this merge request.
* These commits solving above inconsistencies were removed from this MR and a
  different MR was raised. MR with those commits: !3928.
This commit is contained in:
Jaroslava Fiedlerova
2026-03-10 10:32:07 +01:00
27 changed files with 989 additions and 157 deletions
+125 -127
View File
@@ -178,92 +178,97 @@ uint8_t set_ssb_case(int scs, int nr_band)
return ssb_case;
}
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) (Rel.17)
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) (Rel.18)
// Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101)
// Notes:
// - N_OFFs for bands from 80 to 89 and band 95 is referred to UL
// - Frequencies are expressed in KHz
// - col: NR_band ul_min ul_max dl_min dl_max step N_OFFs_DL deltaf_raster
const nr_bandentry_t nr_bandtable[] = {{1, 1920000, 1980000, 2110000, 2170000, 20, 422000, 100},
{2, 1850000, 1910000, 1930000, 1990000, 20, 386000, 100},
{3, 1710000, 1785000, 1805000, 1880000, 20, 361000, 100},
{5, 824000, 849000, 869000, 894000, 20, 173800, 100},
{7, 2500000, 2570000, 2620000, 2690000, 20, 524000, 100},
{8, 880000, 915000, 925000, 960000, 20, 185000, 100},
{12, 699000, 716000, 729000, 746000, 20, 145800, 100},
{13, 777000, 787000, 746000, 756000, 20, 149200, 100},
{14, 788000, 798000, 758000, 768000, 20, 151600, 100},
{18, 815000, 830000, 860000, 875000, 20, 172000, 100},
{20, 832000, 862000, 791000, 821000, 20, 158200, 100},
{24, 1627500, 1656500, 1526000, 1536000, 20, 305000, 100},
{25, 1850000, 1915000, 1930000, 1995000, 20, 386000, 100},
{26, 814000, 849000, 859000, 894000, 20, 171800, 100},
{28, 703000, 758000, 758000, 813000, 20, 151600, 100},
{29, 000, 000, 717000, 728000, 20, 143400, 100},
{30, 2305000, 2315000, 2350000, 2360000, 20, 470000, 100},
{34, 2010000, 2025000, 2010000, 2025000, 20, 402000, 100},
{38, 2570000, 2620000, 2570000, 2630000, 20, 514000, 100},
{39, 1880000, 1920000, 1880000, 1920000, 20, 376000, 100},
{40, 2300000, 2400000, 2300000, 2400000, 20, 460000, 100},
{41, 2496000, 2690000, 2496000, 2690000, 3, 499200, 15},
{41, 2496000, 2690000, 2496000, 2690000, 6, 499200, 30},
{46, 5150000, 5925000, 5150000, 5925000, 1, 743334, 15},
{47, 5855000, 5925000, 5855000, 5925000, 1, 790334, 15},
{48, 3550000, 3700000, 3550000, 3700000, 1, 636667, 15},
{48, 3550000, 3700000, 3550000, 3700000, 2, 636668, 30},
{50, 1432000, 1517000, 1432000, 1517000, 20, 286400, 100},
{51, 1427000, 1432000, 1427000, 1432000, 20, 285400, 100},
{53, 2483500, 2495000, 2483500, 2495000, 20, 496700, 100},
{65, 1920000, 2010000, 2110000, 2200000, 20, 422000, 100},
{66, 1710000, 1780000, 2110000, 2200000, 20, 422000, 100},
{67, 000, 000, 738000, 758000, 20, 147600, 100},
{70, 1695000, 1710000, 1995000, 2020000, 20, 399000, 100},
{71, 663000, 698000, 617000, 652000, 20, 123400, 100},
{74, 1427000, 1470000, 1475000, 1518000, 20, 295000, 100},
{75, 000, 000, 1432000, 1517000, 20, 286400, 100},
{76, 000, 000, 1427000, 1432000, 20, 285400, 100},
{77, 3300000, 4200000, 3300000, 4200000, 1, 620000, 15},
{77, 3300000, 4200000, 3300000, 4200000, 2, 620000, 30},
{78, 3300000, 3800000, 3300000, 3800000, 1, 620000, 15},
{78, 3300000, 3800000, 3300000, 3800000, 2, 620000, 30},
{79, 4400010, 5000000, 4400010, 5000000, 1, 693334, 15},
{79, 4400010, 5000000, 4400010, 5000000, 2, 693334, 30},
{80, 1710000, 1785000, 000, 000, 20, 342000, 100},
{81, 880000, 915000, 000, 000, 20, 176000, 100},
{82, 832000, 862000, 000, 000, 20, 166400, 100},
{83, 703000, 748000, 000, 000, 20, 140600, 100},
{84, 1920000, 1980000, 000, 000, 20, 384000, 100},
{85, 698000, 716000, 728000, 746000, 20, 145600, 100},
{86, 1710000, 1785000, 000, 000, 20, 342000, 100},
{89, 824000, 849000, 000, 000, 20, 342000, 100},
{90, 2496000, 2690000, 2496000, 2690000, 3, 499200, 15},
{90, 2496000, 2690000, 2496000, 2690000, 6, 499200, 30},
{90, 2496000, 2690000, 2496000, 2690000, 20, 499200, 100},
{91, 832000, 862000, 1427000, 1432000, 20, 285400, 100},
{92, 832000, 862000, 1432000, 1517000, 20, 286400, 100},
{93, 880000, 915000, 1427000, 1432000, 20, 285400, 100},
{94, 880000, 915000, 1432000, 1517000, 20, 286400, 100},
{95, 2010000, 2025000, 000, 000, 20, 402000, 100},
{96, 5925000, 7125000, 5925000, 7125000, 1, 795000, 15},
{100, 874400, 880000, 919400, 925000, 20, 174880, 100},
{101, 1900000, 1910000, 1900000, 1910000, 20, 380000, 100},
{102, 5925000, 6425000, 5925000, 6425000, 1, 795000, 15},
{104, 6425000, 7125000, 6425000, 7125000, 1, 828334, 15},
{104, 6425000, 7125000, 6425000, 7125000, 2, 828334, 30},
{254, 1610000, 1626500, 2483500, 2500000, 20, 496700, 100},
{254, 1610000, 1626500, 2483500, 2500000, 2, 496700, 10},
{255, 1626500, 1660500, 1525000, 1559000, 20, 305000, 100},
{255, 1626500, 1660500, 1525000, 1559000, 2, 305000, 10},
{256, 1980000, 2010000, 2170000, 2200000, 20, 434000, 100},
{256, 1980000, 2010000, 2170000, 2200000, 2, 434000, 10},
{257, 26500020, 29500000, 26500020, 29500000, 1, 2054166, 60},
{257, 26500080, 29500000, 26500080, 29500000, 2, 2054167, 120},
{258, 24250080, 27500000, 24250080, 27500000, 1, 2016667, 60},
{258, 24250080, 27500000, 24250080, 27500000, 2, 2016667, 120},
{260, 37000020, 40000000, 37000020, 40000000, 1, 2229166, 60},
{260, 37000080, 40000000, 37000080, 40000000, 2, 2229167, 120},
{261, 27500040, 28350000, 27500040, 28350000, 1, 2070833, 60},
{261, 27500040, 28350000, 27500040, 28350000, 2, 2070833, 120}};
// - col: NR_band ul_min ul_max dl_min dl_max ul_stepsize dl_stepsize N_OFFs_UL N_OFFs_DL deltaf_raster
const nr_bandentry_t nr_bandtable[] = {{1, 1920000, 1980000, 2110000, 2170000, 20, 20, 384000, 422000, 100},
{2, 1850000, 1910000, 1930000, 1990000, 20, 20, 370000, 386000, 100},
{3, 1710000, 1785000, 1805000, 1880000, 20, 20, 342000, 361000, 100},
{5, 824000, 849000, 869000, 894000, 20, 20, 164800, 173800, 100},
{7, 2500000, 2570000, 2620000, 2690000, 20, 20, 500000, 524000, 100},
{8, 880000, 915000, 925000, 960000, 20, 20, 176000, 185000, 100},
{12, 699000, 716000, 729000, 746000, 20, 20, 139800, 145800, 100},
{13, 777000, 787000, 746000, 756000, 20, 20, 155400, 149200, 100},
{14, 788000, 798000, 758000, 768000, 20, 20, 157600, 151600, 100},
{18, 815000, 830000, 860000, 875000, 20, 20, 163000, 172000, 100},
{20, 832000, 862000, 791000, 821000, 20, 20, 166400, 158200, 100},
{24, 1626500, 1660500, 1525000, 1559000, 20, 20, 325300, 305000, 100},
{25, 1850000, 1915000, 1930000, 1995000, 20, 20, 370000, 386000, 100},
{26, 814000, 849000, 859000, 894000, 20, 20, 162800, 171800, 100},
{28, 703000, 748000, 758000, 803000, 20, 20, 140600, 151600, 100},
{29, 000, 000, 717000, 728000, 0, 20, 0, 143400, 100},
{30, 2305000, 2315000, 2350000, 2360000, 20, 20, 461000, 470000, 100},
{34, 2010000, 2025000, 2010000, 2025000, 20, 20, 402000, 402000, 100},
{38, 2570000, 2620000, 2570000, 2620000, 20, 20, 514000, 514000, 100},
{39, 1880000, 1920000, 1880000, 1920000, 20, 20, 376000, 376000, 100},
{40, 2300000, 2400000, 2300000, 2400000, 20, 20, 460000, 460000, 100},
{41, 2496000, 2690000, 2496000, 2690000, 3, 3, 499200, 499200, 15},
{41, 2496000, 2690000, 2496000, 2690000, 6, 6, 499200, 499200, 30},
{46, 5150000, 5925000, 5150000, 5925000, 1, 1, 743334, 743334, 15},
{47, 5855000, 5925000, 5855000, 5925000, 1, 1, 790334, 790334, 15},
{48, 3550000, 3700000, 3550000, 3700000, 1, 1, 636667, 636667, 15},
{48, 3550000, 3700000, 3550000, 3700000, 2, 2, 636668, 636668, 30},
{50, 1432000, 1517000, 1432000, 1517000, 20, 20, 286400, 286400, 100},
{51, 1427000, 1432000, 1427000, 1432000, 20, 20, 285400, 285400, 100},
{53, 2483500, 2495000, 2483500, 2495000, 20, 20, 496700, 496700, 100},
{65, 1920000, 2010000, 2110000, 2200000, 20, 20, 384000, 422000, 100},
{66, 1710000, 1780000, 2110000, 2200000, 20, 20, 342000, 422000, 100},
{67, 000, 000, 738000, 758000, 0, 20, 0, 147600, 100},
{70, 1695000, 1710000, 1995000, 2020000, 20, 20, 339000, 399000, 100},
{71, 663000, 698000, 617000, 652000, 20, 20, 132600, 123400, 100},
{74, 1427000, 1470000, 1475000, 1518000, 20, 20, 285400, 295000, 100},
{75, 000, 000, 1432000, 1517000, 0, 20, 0, 286400, 100},
{76, 000, 000, 1427000, 1432000, 0, 20, 0, 285400, 100},
{77, 3300000, 4200000, 3300000, 4200000, 1, 1, 620000, 620000, 15},
{77, 3300000, 4200000, 3300000, 4200000, 2, 2, 620000, 620000, 30},
{78, 3300000, 3800000, 3300000, 3800000, 1, 1, 620000, 620000, 15},
{78, 3300000, 3800000, 3300000, 3800000, 2, 2, 620000, 620000, 30},
{79, 4400000, 5000000, 4400000, 5000000, 1, 1, 693334, 693334, 15},
{79, 4400000, 5000000, 4400000, 5000000, 2, 2, 693334, 693334, 30},
{80, 1710000, 1785000, 000, 000, 20, 0, 342000, 0, 100},
{81, 880000, 915000, 000, 000, 20, 0, 176000, 0, 100},
{82, 832000, 862000, 000, 000, 20, 0, 166400, 0, 100},
{83, 703000, 748000, 000, 000, 20, 0, 140600, 0, 100},
{84, 1920000, 1980000, 000, 000, 20, 0, 384000, 0, 100},
{85, 698000, 716000, 728000, 746000, 20, 20, 139600, 145600, 100},
{86, 1710000, 1780000, 000, 000, 20, 0, 342000, 0, 100},
{89, 824000, 849000, 000, 000, 20, 0, 342000, 0, 100},
{90, 2496000, 2690000, 2496000, 2690000, 3, 3, 499200, 499200, 15},
{90, 2496000, 2690000, 2496000, 2690000, 6, 6, 499200, 499200, 30},
{90, 2496000, 2690000, 2496000, 2690000, 20, 20, 499200, 499200, 100},
{91, 832000, 862000, 1427000, 1432000, 20, 20, 166400, 285400, 100},
{92, 832000, 862000, 1432000, 1517000, 20, 20, 166400, 286400, 100},
{93, 880000, 915000, 1427000, 1432000, 20, 20, 176000, 285400, 100},
{94, 880000, 915000, 1432000, 1517000, 20, 20, 176000, 286400, 100},
{95, 2010000, 2025000, 000, 000, 20, 20, 402000, 402000, 100},
{96, 5925000, 7125000, 5925000, 7125000, 1, 1, 795000, 795000, 15},
{100, 874400, 880000, 919400, 925000, 20, 20, 174880, 174880, 100},
{101, 1900000, 1910000, 1900000, 1910000, 20, 20, 380000, 380000, 100},
{102, 5925000, 6425000, 5925000, 6425000, 1, 1, 795000, 795000, 15},
{104, 6425000, 7125000, 6425000, 7125000, 1, 1, 828334, 828334, 15},
{104, 6425000, 7125000, 6425000, 7125000, 2, 2, 828334, 828334, 30},
{254, 1610000, 1626500, 2483500, 2500000, 20, 20, 322000, 496700, 100},
{254, 1610000, 1626500, 2483500, 2500000, 2, 2, 322000, 496700, 10},
{255, 1626500, 1660500, 1525000, 1559000, 20, 20, 325300, 305000, 100},
{255, 1626500, 1660500, 1525000, 1559000, 2, 2, 325300, 305000, 10},
{256, 1980000, 2010000, 2170000, 2200000, 20, 20, 396000, 434000, 100},
{256, 1980000, 2010000, 2170000, 2200000, 2, 2, 396000, 434000, 10},
{257, 26500020, 29500000, 26500020, 29500000, 1, 1, 2054166, 2054166, 60},
{257, 26500080, 29500000, 26500080, 29500000, 2, 2, 2054167, 2054167, 120},
{258, 24250080, 27500000, 24250080, 27500000, 1, 1, 2016667, 2016667, 60},
{258, 24250080, 27500000, 24250080, 27500000, 2, 2, 2016667, 2016667, 120},
{260, 37000020, 40000000, 37000020, 40000000, 1, 1, 2229166, 2229166, 60},
{260, 37000080, 40000000, 37000080, 40000000, 2, 2, 2229167, 2229167, 120},
{261, 27500040, 28350000, 27500040, 28350000, 1, 1, 2070833, 2070833, 60},
{261, 27500040, 28350000, 27500040, 28350000, 2, 2, 2070833, 2070833, 120},
{510, 27500000, 28350000, 17300000, 20200000, 1, 4, 2070833, 1553336, 60},
{510, 27500000, 28350000, 17300000, 20200000, 2, 8, 2070833, 1553336, 120},
{511, 28350000, 30000000, 17300000, 20200000, 1, 4, 2084999, 1553336, 60},
{511, 28350000, 30000000, 17300000, 20200000, 2, 8, 2084999, 1553336, 120},
{512, 27500000, 30000000, 17300000, 20200000, 1, 4, 2070833, 1553336, 60},
{512, 27500000, 30000000, 17300000, 20200000, 2, 8, 2070833, 1553336, 120}};
// synchronization raster per band tables (Rel.17)
// (38.101-1 Table 5.4.3.3-1 and 38.101-2 Table 5.4.3.3-1)
@@ -341,6 +346,13 @@ const sync_raster_t sync_raster[] = {
{260, 4, 22996, 2, 23164},
{261, 3, 22446, 1, 22492},
{261, 4, 22446, 2, 22490},
{510, 3, 17448, 12, 19428},
{510, 4, 17472, 24, 19416},
{511, 3, 17448, 12, 19428},
{511, 4, 17472, 24, 19416},
{512, 3, 17448, 12, 19428},
{512, 4, 17472, 24, 19416},
/***************************/
};
// clang-format on
@@ -542,14 +554,6 @@ int get_nb_periods_per_frame(uint8_t tdd_period)
return nb_periods_per_frame;
}
void get_delta_arfcn(int i, uint32_t nrarfcn, uint64_t N_OFFs)
{
uint32_t delta_arfcn = nrarfcn - N_OFFs;
if(delta_arfcn % (nr_bandtable[i].step_size) != 0)
LOG_E(NR_MAC, "nrarfcn %u is not on the channel raster for step size %lu\n", nrarfcn, nr_bandtable[i].step_size);
}
uint32_t to_nrarfcn(uint64_t CarrierFreq)
{
uint64_t CarrierFreq_by_1k = CarrierFreq / 1000;
@@ -580,7 +584,6 @@ uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t nrarfcn)
int deltaFglobal = 5;
uint32_t N_REF_Offs = 0;
uint64_t F_REF_Offs_khz = 0;
uint64_t N_OFFs, frequency, freq_min;
int i = get_nr_table_idx(nr_bandP, scs_index);
if (nrarfcn > 599999 && nrarfcn < 2016667) {
@@ -594,42 +597,30 @@ uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t nrarfcn)
F_REF_Offs_khz = 24250080;
}
int32_t delta_duplex = get_delta_duplex(nr_bandP, scs_index);
// First check if the ARFCN is on the RASTER
uint32_t stepsize = nr_bandtable[i].dl_stepsize;
uint32_t N_OFFs = nr_bandtable[i].N_OFFs_DL;
if (delta_duplex <= 0){ // DL band >= UL band
if (nrarfcn >= nr_bandtable[i].N_OFFs_DL){ // is TDD of FDD DL
N_OFFs = nr_bandtable[i].N_OFFs_DL;
freq_min = nr_bandtable[i].dl_min;
} else {// is FDD UL
N_OFFs = nr_bandtable[i].N_OFFs_DL + delta_duplex/deltaFglobal;
freq_min = nr_bandtable[i].ul_min;
}
} else { // UL band > DL band
if (nrarfcn >= nr_bandtable[i].N_OFFs_DL + delta_duplex / deltaFglobal){ // is FDD UL
N_OFFs = nr_bandtable[i].N_OFFs_DL + delta_duplex / deltaFglobal;
freq_min = nr_bandtable[i].ul_min;
} else { // is FDD DL
N_OFFs = nr_bandtable[i].N_OFFs_DL;
freq_min = nr_bandtable[i].dl_min;
if (nrarfcn >= nr_bandtable[i].N_OFFs_UL) {
if (nr_bandtable[i].N_OFFs_UL > N_OFFs || nrarfcn < N_OFFs) {
N_OFFs = nr_bandtable[i].N_OFFs_UL;
stepsize = nr_bandtable[i].ul_stepsize;
}
}
LOG_D(NR_MAC, "Frequency from NR-ARFCN for N_OFFs %lu, duplex spacing %d KHz, deltaFglobal %d KHz\n",
N_OFFs,
delta_duplex,
deltaFglobal);
LOG_D(NR_MAC, "N_OFFs %u, deltaFglobal %d KHz, stepsize:%d\n", N_OFFs, deltaFglobal, stepsize);
AssertFatal(nrarfcn >= N_OFFs,"nrarfcn %u < N_OFFs[%d] %llu\n", nrarfcn, nr_bandtable[i].band, (long long unsigned int)N_OFFs);
get_delta_arfcn(i, nrarfcn, N_OFFs);
AssertFatal(nrarfcn >= N_OFFs,"nrarfcn %u < N_OFFs[%d] %u\n", nrarfcn, nr_bandtable[i].band, N_OFFs);
frequency = 1000 * (F_REF_Offs_khz + (nrarfcn - N_REF_Offs) * deltaFglobal);
if ((nrarfcn - N_OFFs) % stepsize != 0)
LOG_E(NR_MAC, "nrarfcn %u is not on the channel raster for step size %u. N_OFFS:%d\n",
nrarfcn, stepsize, N_OFFs);
LOG_D(NR_MAC, "Computing frequency (nrarfcn %llu => %llu KHz (freq_min %llu KHz, NR band %d N_OFFs %llu))\n",
uint64_t frequency = 1000 * (F_REF_Offs_khz + (nrarfcn - N_REF_Offs) * deltaFglobal);
LOG_I(NR_MAC, "Computing frequency (nrarfcn %llu => %llu KHz, NR band %d\n",
(unsigned long long)nrarfcn,
(unsigned long long)frequency/1000,
(unsigned long long)freq_min,
nr_bandP,
(unsigned long long)N_OFFs);
nr_bandP);
return frequency;
}
@@ -1049,12 +1040,13 @@ uint32_t get_ssb_offset_to_pointA(uint32_t absoluteFrequencySSB,
// only difference wrt NR-ARFCN is delta frequency 5kHz if f < 3 GHz for ARFCN
uint32_t absolute_diff = (absoluteFrequencySSB - absoluteFrequencyPointA);
const int scaling_5khz = absoluteFrequencyPointA < 600000 ? 3 : 1;
const int scaling = frequency_range == FR2 ? 1 << (ssbSubcarrierSpacing - 2) : 1 << ssbSubcarrierSpacing;
const int scaling = (absoluteFrequencyPointA >= 2016667) ? 1 << (ssbSubcarrierSpacing - 2) : 1 << ssbSubcarrierSpacing;
const int scaled_abs_diff = absolute_diff / (scaling_5khz * scaling);
// absoluteFrequencySSB is the central frequency of SSB which is made by 20RBs in total
const int ssb_offset_point_a = ((scaled_abs_diff / 12) - 10) * scaling;
const int ssb_offset_scaling = (frequency_range == FR2) ? 1 << (ssbSubcarrierSpacing - 2) : 1 << ssbSubcarrierSpacing;
const int ssb_offset_point_a = ((scaled_abs_diff / 12) - 10) * ssb_offset_scaling;
// Offset to point A needs to be divisible by scaling
AssertFatal(ssb_offset_point_a % scaling == 0, "PRB offset %d not valid for scs %d\n", ssb_offset_point_a, ssbSubcarrierSpacing);
AssertFatal(ssb_offset_point_a % ssb_offset_scaling == 0, "PRB offset %d not valid for scs %d\n", ssb_offset_point_a, ssbSubcarrierSpacing);
AssertFatal(ssb_offset_point_a >= 0, "ssb offset is negative %d for scs %d\n", ssb_offset_point_a, ssbSubcarrierSpacing);
return ssb_offset_point_a;
}
@@ -1358,11 +1350,14 @@ long rrc_get_max_nr_csrs(const int max_rbs, const long b_SRS)
frequency_range_t get_freq_range_from_freq(uint64_t freq)
{
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
// 3GPP TS 38.101-1,38.101-5 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
if (freq >= 410000000 && freq <= 7125000000)
return FR1;
if (freq >= 24250000000 && freq <= 71000000000)
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
// FR2 is from 24250 MHz –to 71000 MHz
// 3GPP TS 38.101-5 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
// FR2 for NTN is from 17300 Mhz to 30000 MHz
if (freq >= 17300000000 && freq <= 71000000000)
return FR2;
AssertFatal(false, "Undefined Frequency Range for frequency %ld Hz\n", freq);
@@ -1373,8 +1368,11 @@ frequency_range_t get_freq_range_from_arfcn(uint32_t arfcn)
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
if (arfcn >= 82000 && arfcn <= 875000)
return FR1;
if (arfcn >= 2016667 && arfcn <= 2795832)
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
// FR2 is from 24250 MHz –to 71000 MHz (from ARFCN 2016667)
// 3GPP TS 38.101-5 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
// FR2 for NTN is from 17300 Mhz to 30000 MHz, from ARFCN 1553336 (Table 5.4.2.3-3)
if (arfcn >= 1553336 && arfcn <= 2795832)
return FR2;
AssertFatal(false, "Undefined Frequency Range for ARFCN %d\n", arfcn);
+4 -2
View File
@@ -107,8 +107,10 @@ typedef struct nr_bandentry_s {
uint64_t ul_max;
uint64_t dl_min;
uint64_t dl_max;
uint64_t step_size;
uint64_t N_OFFs_DL;
uint8_t ul_stepsize;
uint8_t dl_stepsize;
uint32_t N_OFFs_UL;
uint32_t N_OFFs_DL;
uint8_t deltaf_raster;
} nr_bandentry_t;