Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
spbro
OpenXG-RAN
Commits
0609742e
Commit
0609742e
authored
Oct 30, 2020
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/benetel_5g_prach_fix' into benetel_phase_rotation
parents
c737ea2f
8ba0d28a
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
75 additions
and
28 deletions
+75
-28
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+12
-2
targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c
targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c
+3
-4
targets/ARCH/ETHERNET/benetel/5g/benetel.c
targets/ARCH/ETHERNET/benetel/5g/benetel.c
+1
-0
targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c
targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c
+11
-11
targets/ARCH/ETHERNET/benetel/5g/low.c
targets/ARCH/ETHERNET/benetel/5g/low.c
+35
-2
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf
+7
-5
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
+6
-4
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
0609742e
...
...
@@ -421,14 +421,24 @@ void nr_initiate_ra_proc(module_id_t module_idP,
uint8_t
ul_carrier_id
=
0
;
// 0 for NUL 1 for SUL
NR_SearchSpace_t
*
ss
;
// ra_rnti from 5.1.3 in 38.321
uint16_t
ra_rnti
=
1
+
symbol
+
(
slotP
*
14
)
+
(
freq_index
*
14
*
80
)
+
(
ul_carrier_id
*
14
*
80
*
8
);
int
UE_id
=
0
;
uint16_t
msg2_frame
,
msg2_slot
,
monitoring_slot_period
,
monitoring_offset
;
gNB_MAC_INST
*
nr_mac
=
RC
.
nrmac
[
module_idP
];
NR_COMMON_channels_t
*
cc
=
&
nr_mac
->
common_channels
[
CC_id
];
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
NR_RA_t
*
ra
=
&
cc
->
ra
[
0
];
uint16_t
ra_rnti
;
// ra_rnti from 5.1.3 in 38.321
// FK: in case of long PRACH the phone seems to expect the subframe number instead of the slot number here.
if
(
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
present
==
NR_RACH_ConfigCommon__prach_RootSequenceIndex_PR_l839
)
ra_rnti
=
1
+
symbol
+
(
9
/*slotP*/
*
14
)
+
(
freq_index
*
14
*
80
)
+
(
ul_carrier_id
*
14
*
80
*
8
);
else
ra_rnti
=
1
+
symbol
+
(
slotP
*
14
)
+
(
freq_index
*
14
*
80
)
+
(
ul_carrier_id
*
14
*
80
*
8
);
// if the preamble received correspond to one of the listed
// the UE sent a RACH either for starting RA procedure or RA procedure failed and UE retries
int
pr_found
=
0
;
...
...
targets/ARCH/ETHERNET/benetel/4g/dpdk_driver.c
View file @
0609742e
...
...
@@ -86,10 +86,9 @@ static struct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS];
static
struct
rte_eth_conf
port_conf
=
{
.
rxmode
=
{
.
split_hdr_size
=
0
,
.
offloads
=
DEV_RX_OFFLOAD_CRC_STRIP
,
.
offloads
=
DEV_RX_OFFLOAD_JUMBO_FRAME
,
.
split_hdr_size
=
0
,
.
max_rx_pkt_len
=
9500
,
.
offloads
=
DEV_RX_OFFLOAD_JUMBO_FRAME
,
.
split_hdr_size
=
0
,
.
max_rx_pkt_len
=
9500
,
},
.
txmode
=
{
.
mq_mode
=
ETH_MQ_TX_NONE
,
...
...
targets/ARCH/ETHERNET/benetel/5g/benetel.c
View file @
0609742e
...
...
@@ -275,6 +275,7 @@ void benetel_fh_if4p5_south_out(RU_t *ru,
int
slot
,
uint64_t
timestamp
)
{
//printf("XXX benetel_fh_if4p5_south_out %d %d %ld\n", frame, slot, timestamp);
benetel_eth_state_t
*
s
=
ru
->
ifdevice
.
priv
;
NR_DL_FRAME_PARMS
*
fp
;
...
...
targets/ARCH/ETHERNET/benetel/5g/dpdk_driver.c
View file @
0609742e
...
...
@@ -86,10 +86,9 @@ static struct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS];
static
struct
rte_eth_conf
port_conf
=
{
.
rxmode
=
{
.
split_hdr_size
=
0
,
.
offloads
=
DEV_RX_OFFLOAD_CRC_STRIP
,
.
offloads
=
DEV_RX_OFFLOAD_JUMBO_FRAME
,
.
split_hdr_size
=
0
,
.
max_rx_pkt_len
=
9500
,
.
offloads
=
DEV_RX_OFFLOAD_JUMBO_FRAME
,
.
split_hdr_size
=
0
,
.
max_rx_pkt_len
=
9500
,
},
.
txmode
=
{
.
mq_mode
=
ETH_MQ_TX_NONE
,
...
...
@@ -234,7 +233,7 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
}
// Trigger start send DL packets
if
(
PAYLOAD_1
==
0x13
&&
PAYLOAD_2
==
0xe4
&&
SYMBOL
==
0x4
6
&&
ANT_NUM
==
0x00
&&
SUBFRAME
==
0x00
&&
dl_start
==
0
){
if
(
PAYLOAD_1
==
0x13
&&
PAYLOAD_2
==
0xe4
&&
SYMBOL
==
0x4
4
&&
ANT_NUM
==
0x00
&&
SUBFRAME
==
0x00
&&
dl_start
==
0
){
printf
(
"
\n
U-Plane Started
\n
"
);
printf
(
"
\n
====================================================
\n
"
);
...
...
@@ -253,7 +252,7 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
p
.
antenna
=
0
;
memcpy
(
p
.
iq
,
IQ_ptr
,
5088
);
store_ul
(
bs
,
&
p
);
//
if (p.symbol==0) printf("store ul f.sl.sy %d.%d.%d\n", p.frame, p.slot, p.symbol);
//
if (p.symbol==0) printf("store ul f.sl.sy %d.%d.%d\n", p.frame, p.slot, p.symbol);
}
// U-PLANE UL ANT_0 PROCESSING
...
...
@@ -268,7 +267,7 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
int
tx_frame
=
frame
;
int
tx_subframe
=
subframe
;
int
tx_slot
=
slot
;
int
tx_symbol
=
symbol
+
8
;
int
tx_symbol
=
symbol
+
10
;
if
(
tx_symbol
>
13
)
{
tx_symbol
-=
14
;
...
...
@@ -286,7 +285,7 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
ANT_NUM
=
0x00
;
// Mask the symbol bits from UL packet received and apply the shift.
SYMBOL
=
((
SYMBOL
&
0
b00111111
)
+
8
)
%
14
;
SYMBOL
=
((
SYMBOL
&
0
b00111111
)
+
10
)
%
14
;
ANT_NUM
=
0x00
;
SUBFRAME
=
sf
;
...
...
@@ -307,6 +306,7 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
memcpy
(
IQ_ptr
,
bs
->
buffers
->
dl
[
oai_slot
]
+
tx_symbol
*
1272
*
4
,
1272
*
4
);
}
//printf("DL buffer f sf slot symbol %d %d %d %d (sf %d)\n", tx_frame, tx_subframe, tx_slot, tx_symbol, (int)sf);
bs
->
buffers
->
dl_busy
[
oai_slot
]
&=
~
(
1
<<
tx_symbol
);
unlock_dl_buffer
(
bs
->
buffers
,
oai_slot
);
...
...
@@ -319,7 +319,7 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
{
// Mask the symbol bits from UL packet received and apply the shift.
SYMBOL
=
((
SYMBOL
&
0
b00111111
)
+
8
)
%
14
;
SYMBOL
=
((
SYMBOL
&
0
b00111111
)
+
10
)
%
14
;
ANT_NUM
=
0x01
;
SUBFRAME
=
sf
;
...
...
@@ -348,10 +348,10 @@ l2fwd_simple_forward(struct rte_mbuf *m, unsigned portid, benetel_t *bs)
else
if
(
PAYLOAD_1
==
0x0d
&&
PAYLOAD_2
==
0x28
){
if
(
ANT_NUM
==
0
)
{
int
subframe
=
SUBFRAME
>>
4
;
int
slot
=
((
SUBFRAME
&
0x0f
)
<<
2
)
|
((
SYMBOL
>>
6
)
&
0x03
);
//
int slot = ((SUBFRAME & 0x0f) << 2) | ((SYMBOL >> 6) & 0x03);
if
(
subframe
==
9
)
{
//printf("store prach f.sf.sl %d.%d.%d %d\n", FRAME, subframe, slot, subframe * 2 + slot);
store_prach
(
bs
,
FRAME
,
s
lot
/*subframe * 2 + slot*/
,
IQ_ptr
);
store_prach
(
bs
,
FRAME
,
s
ubframe
*
2
+
1
,
IQ_ptr
);
}
}
rte_pktmbuf_free
(
m
);
...
...
targets/ARCH/ETHERNET/benetel/5g/low.c
View file @
0609742e
...
...
@@ -27,17 +27,50 @@
void
store_ul
(
benetel_t
*
bs
,
ul_packet_t
*
ul
)
{
#if 0
struct timespec t;
static struct timespec old;
clock_gettime(CLOCK_REALTIME, &t);
printf("store_ul %d.%ld (%ld)\n", (int)(t.tv_sec % 60), t.tv_nsec, t.tv_nsec - old.tv_nsec);
old = t;
#endif
/* only antenna 0 for the moment */
if
(
ul
->
antenna
!=
0
)
return
;
if
(
ul
->
slot
!=
bs
->
next_slot
||
ul
->
symbol
!=
bs
->
next_symbol
)
{
printf
(
"%s:
fatal
, expected frame.sl.symbol %d.%d.%d, got %d.%d.%d
\n
"
,
printf
(
"%s:
error
, expected frame.sl.symbol %d.%d.%d, got %d.%d.%d
\n
"
,
__FUNCTION__
,
bs
->
expected_benetel_frame
,
bs
->
next_slot
,
bs
->
next_symbol
,
ul
->
frame
,
ul
->
slot
,
ul
->
symbol
);
exit
(
1
);
}
/* fill missing data with 0s */
while
(
ul
->
slot
!=
bs
->
next_slot
||
ul
->
symbol
!=
bs
->
next_symbol
)
{
lock_ul_buffer
(
bs
->
buffers
,
bs
->
next_slot
);
if
(
bs
->
buffers
->
ul_busy
[
bs
->
next_slot
]
&
(
1
<<
bs
->
next_symbol
))
{
printf
(
"%s: warning, UL overflow (sl.symbol %d.%d)
\n
"
,
__FUNCTION__
,
bs
->
next_slot
,
bs
->
next_symbol
);
}
memset
(
bs
->
buffers
->
ul
[
bs
->
next_slot
]
+
bs
->
next_symbol
*
1272
*
4
,
0
,
1272
*
4
);
bs
->
buffers
->
ul_busy
[
bs
->
next_slot
]
|=
(
1
<<
bs
->
next_symbol
);
signal_ul_buffer
(
bs
->
buffers
,
bs
->
next_slot
);
unlock_ul_buffer
(
bs
->
buffers
,
bs
->
next_slot
);
bs
->
next_symbol
++
;
if
(
bs
->
next_symbol
==
14
)
{
bs
->
next_symbol
=
0
;
bs
->
next_slot
=
(
bs
->
next_slot
+
1
)
%
20
;
if
(
bs
->
next_slot
==
0
)
{
bs
->
expected_benetel_frame
++
;
bs
->
expected_benetel_frame
&=
255
;
}
}
}
lock_ul_buffer
(
bs
->
buffers
,
bs
->
next_slot
);
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-4g.conf
View file @
0609742e
...
...
@@ -139,6 +139,8 @@ eNBs =
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size
=
5
;
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused
=
0
;
//
SSB
central
frequency
of
NR
secondary
cell
group
(
for
ENDC
NSA
)
nr_scg_ssb_freq
=
640000
;
}
);
...
...
@@ -174,14 +176,14 @@ eNBs =
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.
61.195
"
;
mme_ip_address
= ( {
ipv4
=
"192.168.
18.99
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
}
);
enable_measurement_reports
=
"
no
"
;
enable_measurement_reports
=
"
yes
"
;
///
X2
enable_x2
=
"yes"
;
...
...
@@ -193,9 +195,9 @@ eNBs =
NETWORK_INTERFACES
:
{
ENB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.1
60.4
6"
;
ENB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.1
8.19
6"
;
ENB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.1
60.4
6"
;
ENB_IPV4_ADDRESS_FOR_S1U
=
"192.168.1
8.19
6"
;
ENB_PORT_FOR_S1U
=
2152
;
# Spec 2152
ENB_IPV4_ADDRESS_FOR_X2C
=
"127.0.0.1"
;
ENB_PORT_FOR_X2C
=
36422
;
# Spec 36422
...
...
@@ -226,7 +228,7 @@ RUs = (
{
//
local_if_name
=
"enp129s0f0"
;
local_if_name
=
"dpdk"
;
sdr_addrs
=
"softmodem -m 2048 -l
8 -n 2 -b 0000:3b:00.0
--proc-type auto --file-prefix ggg -- -p 0x1"
;
sdr_addrs
=
"softmodem -m 2048 -l
35 -n 2 -b 0000:81:00.3
--proc-type auto --file-prefix ggg -- -p 0x1"
;
#sdr_addrs = "softmodem -l 8 -n 2 -- -p 0x2";
remote_address
=
"127.0.0.2"
;
local_address
=
"127.0.0.1"
;
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/benetel-5g.conf
View file @
0609742e
...
...
@@ -23,6 +23,8 @@ gNBs =
ssb_SubcarrierOffset
=
31
; //
0
;
pdsch_AntennaPorts
=
1
;
pusch_TargetSNRx10
=
200
;
pucch_TargetSNRx10
=
200
;
servingCellConfigCommon
= (
{
...
...
@@ -203,7 +205,7 @@ gNBs =
//////////
MME
parameters
:
mme_ip_address
= ( {
ipv4
=
"192.168.
61.195
"
;
mme_ip_address
= ( {
ipv4
=
"192.168.
18.99
"
;
ipv6
=
"192:168:30::17"
;
active
=
"yes"
;
preference
=
"ipv4"
;
...
...
@@ -227,9 +229,9 @@ gNBs =
{
GNB_INTERFACE_NAME_FOR_S1_MME
=
"eth0"
;
GNB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.1
60.146
/24"
;
GNB_IPV4_ADDRESS_FOR_S1_MME
=
"192.168.1
8.195
/24"
;
GNB_INTERFACE_NAME_FOR_S1U
=
"eth0"
;
GNB_IPV4_ADDRESS_FOR_S1U
=
"192.168.1
60.146
/24"
;
GNB_IPV4_ADDRESS_FOR_S1U
=
"192.168.1
8.195
/24"
;
GNB_PORT_FOR_S1U
=
2152
;
# Spec 2152
GNB_IPV4_ADDRESS_FOR_X2C
=
"127.0.0.2/24"
;
GNB_PORT_FOR_X2C
=
36422
;
# Spec 36422
...
...
@@ -267,7 +269,7 @@ RUs = (
clock_src
=
"external"
;
local_if_name
=
"dpdk"
;
sdr_addrs
=
"softmodem -m 2048 -l
6 -n 3 -b 0000:3b:00.1
--proc-type auto --file-prefix hhh -- -p 0x1"
;
sdr_addrs
=
"softmodem -m 2048 -l
34 -n 3 -b 0000:81:00.2
--proc-type auto --file-prefix hhh -- -p 0x1"
;
remote_address
=
"127.0.0.2"
;
local_address
=
"127.0.0.1"
;
local_portc
=
50000
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment