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
wangwenhui
OpenXG-RAN
Commits
0234d377
Commit
0234d377
authored
Jul 12, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nr-rrc-additions' into develop-nr
parents
22cd5d61
36dedfa4
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
165 additions
and
28 deletions
+165
-28
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-0
openair1/SCHED_NR/fapi_nr_l1.c
openair1/SCHED_NR/fapi_nr_l1.c
+2
-2
openair2/GNB_APP/gnb_app.c
openair2/GNB_APP/gnb_app.c
+5
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+3
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+122
-0
openair2/LAYER2/NR_MAC_gNB/mac.h
openair2/LAYER2/NR_MAC_gNB/mac.h
+11
-11
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+9
-2
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
+1
-1
openair2/RRC/NR/L2_nr_interface.c
openair2/RRC/NR/L2_nr_interface.c
+6
-5
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+4
-3
No files found.
cmake_targets/CMakeLists.txt
View file @
0234d377
...
...
@@ -1471,6 +1471,7 @@ set (MAC_SRC
${
NR_MAC_DIR
}
/config.c
${
NR_MAC_DIR
}
/gNB_scheduler.c
${
NR_MAC_DIR
}
/gNB_scheduler_bch.c
${
NR_MAC_DIR
}
/gNB_scheduler_primitives.c
)
...
...
openair1/SCHED_NR/fapi_nr_l1.c
View file @
0234d377
...
...
@@ -45,7 +45,7 @@ void handle_nr_nfapi_bch_pdu(PHY_VARS_gNB *gNB,
AssertFatal
(
dl_config_pdu
->
bch_pdu_rel15
.
length
==
3
,
"BCH PDU has length %d != 3
\n
"
,
dl_config_pdu
->
bch_pdu_rel15
.
length
);
LOG_
D
(
PHY
,
"bch_pdu: %x,%x,
%x
\n
"
,
sdu
[
0
],
sdu
[
1
],
sdu
[
2
]);
LOG_
I
(
PHY
,
"pbch_pdu[0]: %x,pbch_pdu[1]: %x,gNB->pbch_pdu[2]:
%x
\n
"
,
sdu
[
0
],
sdu
[
1
],
sdu
[
2
]);
gNB
->
pbch_pdu
[
0
]
=
sdu
[
2
];
gNB
->
pbch_pdu
[
1
]
=
sdu
[
1
];
gNB
->
pbch_pdu
[
2
]
=
sdu
[
0
];
...
...
@@ -111,4 +111,4 @@ void nr_schedule_response(NR_Sched_Rsp_t *Sched_INFO){
oai_nfapi_nr_dl_config_req
(
Sched_INFO
->
DL_req
);
// DJP - .dl_config_request_body.dl_config_pdu_list[0]); // DJP - FIXME TODO - yuk - only copes with 1 pdu
}
}
\ No newline at end of file
}
openair2/GNB_APP/gnb_app.c
View file @
0234d377
...
...
@@ -81,6 +81,8 @@ static void configure_nr_rrc(uint32_t gnb_id)
}
/*------------------------------------------------------------------------------*/
/*
# if defined(ENABLE_USE_MME)
static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//, const Enb_properties_array_t *enb_properties)
{
...
...
@@ -92,7 +94,7 @@ static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//,
{
s1ap_register_enb_req_t *s1ap_register_gNB; //Type Temporarily reuse
/
* note: there is an implicit relationship between the data structure and the message name */
/
/ note: there is an implicit relationship between the data structure and the message name
msg_p = itti_alloc_new_message (TASK_GNB_APP, S1AP_REGISTER_ENB_REQ); //Message Temporarily reuse
RCconfig_NR_S1(msg_p, gnb_id);
...
...
@@ -113,8 +115,10 @@ static uint32_t gNB_app_register(uint32_t gnb_id_start, uint32_t gnb_id_end)//,
return register_gnb_pending;
}
# endif
*/
#endif
/*------------------------------------------------------------------------------*/
void
*
gNB_app_task
(
void
*
args_p
)
{
...
...
openair2/GNB_APP/gnb_config.c
View file @
0234d377
...
...
@@ -599,7 +599,7 @@ int RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc) {
int32_t
srb1_poll_byte
=
0
;
int32_t
srb1_max_retx_threshold
=
0
;
int32_t
my_int
;
//
int32_t my_int;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
////////// Identification parameters
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
0234d377
...
...
@@ -176,13 +176,14 @@ void check_nr_ul_failure(module_id_t module_idP,
}
*/
/*
void schedule_nr_SRS(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
{
gNB_MAC_INST *gNB = RC.nrmac[module_idP];
UE_list_t *UE_list = &gNB->UE_list;
nfapi_ul_config_request_body_t *ul_req;
int CC_id, UE_id;
COMMON_channels_t
*
cc
=
RC
.
nrmac
[
module_idP
]
->
common_channels
;
NR_
COMMON_channels_t *cc = RC.nrmac[module_idP]->common_channels;
SoundingRS_UL_ConfigCommon_t *soundingRS_UL_ConfigCommon;
struct SoundingRS_UL_ConfigDedicated *soundingRS_UL_ConfigDedicated;
uint8_t TSFC;
...
...
@@ -257,7 +258,7 @@ void schedule_nr_SRS(module_id_t module_idP, frame_t frameP, sub_frame_t subfram
} // SRS config
}
}
*/
void
copy_nr_ulreq
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
)
{
int
CC_id
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
0 → 100644
View file @
0234d377
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
/*! \file eNB_scheduler_primitives.c
* \brief primitives used by eNB for BCH, RACH, ULSCH, DLSCH scheduling
* \author Navid Nikaein and Raymond Knopp
* \date 2010 - 2014
* \email: navid.nikaein@eurecom.fr
* \version 1.0
* @ingroup _mac
*/
#include "assertions.h"
#include "LAYER2/MAC/mac.h"
#include "LAYER2/NR_MAC_gNB/mac.h"
#include "LAYER2/MAC/mac_extern.h"
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
#include "UTIL/LOG/log.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
#include "UTIL/OPT/opt.h"
#include "OCG.h"
#include "OCG_extern.h"
#include "RRC/LTE/rrc_extern.h"
#include "RRC/NR/nr_rrc_extern.h"
#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
//#include "LAYER2/MAC/pre_processor.c"
#include "pdcp.h"
#if defined(ENABLE_ITTI)
#include "intertask_interface.h"
#endif
#include "T.h"
#define ENABLE_MAC_PAYLOAD_DEBUG
#define DEBUG_gNB_SCHEDULER 1
#include "common/ran_context.h"
extern
RAN_CONTEXT_t
RC
;
extern
int
n_active_slices
;
int
is_nr_UL_sf
(
NR_COMMON_channels_t
*
ccP
,
sub_frame_t
subframeP
){
// if FDD return dummy value
if
(
ccP
->
tdd_Config
==
NULL
)
return
(
0
);
switch
(
ccP
->
tdd_Config
->
subframeAssignment
)
{
case
1
:
switch
(
subframeP
)
{
case
0
:
case
4
:
case
5
:
case
9
:
return
(
0
);
break
;
case
2
:
case
3
:
case
7
:
case
8
:
return
(
1
);
break
;
default:
return
(
0
);
break
;
}
break
;
case
3
:
if
((
subframeP
<=
1
)
||
(
subframeP
>=
5
))
return
(
0
);
else
if
((
subframeP
>
1
)
&&
(
subframeP
<
5
))
return
(
1
);
else
AssertFatal
(
1
==
0
,
"Unknown subframe number
\n
"
);
break
;
case
4
:
if
((
subframeP
<=
1
)
||
(
subframeP
>=
4
))
return
(
0
);
else
if
((
subframeP
>
1
)
&&
(
subframeP
<
4
))
return
(
1
);
else
AssertFatal
(
1
==
0
,
"Unknown subframe number
\n
"
);
break
;
case
5
:
if
((
subframeP
<=
1
)
||
(
subframeP
>=
3
))
return
(
0
);
else
if
((
subframeP
>
1
)
&&
(
subframeP
<
3
))
return
(
1
);
else
AssertFatal
(
1
==
0
,
"Unknown subframe number
\n
"
);
break
;
default:
AssertFatal
(
1
==
0
,
"subframe %d Unsupported TDD configuration %d
\n
"
,
subframeP
,
(
int
)
ccP
->
tdd_Config
->
subframeAssignment
);
break
;
}
}
\ No newline at end of file
openair2/LAYER2/NR_MAC_gNB/mac.h
View file @
0234d377
...
...
@@ -113,27 +113,27 @@ typedef struct gNB_MAC_INST_s {
uint16_t
pdu_index
[
NFAPI_CC_MAX
];
/// NFAPI Config Request Structure
nfapi_nr_config_request_t
config
[
NFAPI_CC_MAX
];
nfapi_nr_config_request_t
config
[
NFAPI_CC_MAX
];
/// NFAPI DL Config Request Structure
nfapi_nr_dl_config_request_t
DL_req
[
NFAPI_CC_MAX
];
nfapi_nr_dl_config_request_t
DL_req
[
NFAPI_CC_MAX
];
/// NFAPI UL Config Request Structure, send to L1 4 subframes before processing takes place
nfapi_ul_config_request_t
UL_req
[
NFAPI_CC_MAX
];
nfapi_ul_config_request_t
UL_req
[
NFAPI_CC_MAX
];
/// Preallocated DL pdu list
nfapi_
dl_config_request_pdu_t
dl_config_pdu_list
[
NFAPI_CC_MAX
][
MAX_NUM_DL_PDU
];
nfapi_
nr_dl_config_request_pdu_t
dl_config_pdu_list
[
NFAPI_CC_MAX
][
MAX_NUM_DL_PDU
];
/// Preallocated UL pdu list
nfapi_ul_config_request_pdu_t
ul_config_pdu_list
[
NFAPI_CC_MAX
][
MAX_NUM_UL_PDU
];
nfapi_ul_config_request_pdu_t
ul_config_pdu_list
[
NFAPI_CC_MAX
][
MAX_NUM_UL_PDU
];
/// Preallocated UL pdu list for ULSCH (n+k delay)
nfapi_ul_config_request_pdu_t
ul_config_pdu_list_tmp
[
NFAPI_CC_MAX
][
10
][
MAX_NUM_UL_PDU
];
nfapi_ul_config_request_pdu_t
ul_config_pdu_list_tmp
[
NFAPI_CC_MAX
][
10
][
MAX_NUM_UL_PDU
];
/// NFAPI "Temporary" UL Config Request Structure, holds future UL_config requests
nfapi_ul_config_request_t
UL_req_tmp
[
NFAPI_CC_MAX
][
10
];
nfapi_ul_config_request_t
UL_req_tmp
[
NFAPI_CC_MAX
][
10
];
/// Preallocated HI_DCI0 pdu list
nfapi_hi_dci0_request_pdu_t
hi_dci0_pdu_list
[
NFAPI_CC_MAX
][
MAX_NUM_HI_DCI0_PDU
];
nfapi_hi_dci0_request_pdu_t
hi_dci0_pdu_list
[
NFAPI_CC_MAX
][
MAX_NUM_HI_DCI0_PDU
];
/// NFAPI HI/DCI0 Config Request Structure
nfapi_hi_dci0_request_t
HI_DCI0_req
[
NFAPI_CC_MAX
];
nfapi_hi_dci0_request_t
HI_DCI0_req
[
NFAPI_CC_MAX
];
/// Prealocated TX pdu list
nfapi_tx_request_pdu_t
tx_request_pdu
[
NFAPI_CC_MAX
][
MAX_NUM_TX_REQUEST_PDU
];
nfapi_tx_request_pdu_t
tx_request_pdu
[
NFAPI_CC_MAX
][
MAX_NUM_TX_REQUEST_PDU
];
/// NFAPI DL PDU structure
nfapi_tx_request_t
TX_req
[
NFAPI_CC_MAX
];
nfapi_tx_request_t
TX_req
[
NFAPI_CC_MAX
];
UE_list_t
UE_list
;
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
0234d377
...
...
@@ -5,8 +5,6 @@
#include "mac.h"
#include "PHY/defs_nr_common.h"
void
schedule_nr_mib
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
);
void
mac_top_init_gNB
(
void
);
int
rrc_mac_config_req_gNB
(
module_id_t
Mod_idP
,
...
...
@@ -19,8 +17,17 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
);
int
is_nr_UL_sf
(
NR_COMMON_channels_t
*
ccP
,
sub_frame_t
subframeP
);
void
clear_nr_nfapi_information
(
gNB_MAC_INST
*
gNB
,
int
CC_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
);
void
gNB_dlsch_ulsch_scheduler
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
);
void
schedule_nr_mib
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframeP
);
#endif
/*__LAYER2_NR_MAC_PROTO_H__*/
\ No newline at end of file
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
View file @
0234d377
...
...
@@ -300,7 +300,7 @@ void NR_UL_indication(NR_UL_IND_t *UL_info)
sched_info
->
DL_req
=
&
mac
->
DL_req
[
CC_id
];
sched_info
->
HI_DCI0_req
=
&
mac
->
HI_DCI0_req
[
CC_id
];
if
((
mac
->
common_channels
[
CC_id
].
tdd_Config
==
NULL
)
||
(
is_UL_sf
(
&
mac
->
common_channels
[
CC_id
],(
sched_info
->
subframe
+
sf_ahead
)
%
10
)
>
0
))
(
is_
nr_
UL_sf
(
&
mac
->
common_channels
[
CC_id
],(
sched_info
->
subframe
+
sf_ahead
)
%
10
)
>
0
))
sched_info
->
UL_req
=
&
mac
->
UL_req
[
CC_id
];
else
sched_info
->
UL_req
=
NULL
;
...
...
openair2/RRC/NR/L2_nr_interface.c
View file @
0234d377
...
...
@@ -22,8 +22,8 @@ int8_t mac_rrc_nr_data_req(const module_id_t Mod_idP,
asn_enc_rval_t
enc_rval
;
//SRB_INFO *Srb_info;
//uint8_t Sdu_size = 0;
uint8_t
sfn
=
(
uint8_t
)((
frameP
>>
4
)
&
0xf
f
);
uint8_t
sfn
_msb
=
(
uint8_t
)((
frameP
>>
4
)
&
0x3
f
);
#ifdef DEBUG_RRC
int
i
;
LOG_I
(
RRC
,
"[eNB %d] mac_rrc_data_req to SRB ID=%d
\n
"
,
Mod_idP
,
Srb_id
);
...
...
@@ -38,16 +38,17 @@ int8_t mac_rrc_nr_data_req(const module_id_t Mod_idP,
mib
=
&
carrier
->
mib
;
if
(
(
Srb_id
&
RAB_OFFSET
)
==
MIBCH
)
{
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
buf
=
&
sfn
;
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
buf
[
0
]
=
sfn_msb
<<
2
;
enc_rval
=
uper_encode_to_buffer
(
&
asn_DEF_NR_BCCH_BCH_Message
,
NULL
,
(
void
*
)
mib
,
carrier
->
MIB
,
24
);
LOG_
D
(
RRC
,
"Encoded MIB for frame %d (%p), bits %lu
\n
"
,
sfn
,
carrier
->
MIB
,
enc_rval
.
encoded
);
LOG_
I
(
NR_RRC
,
"Encoded MIB for frame %d sfn_msb %d (%p), bits %lu
\n
"
,
frameP
,
sfn_msb
,
carrier
->
MIB
,
enc_rval
.
encoded
);
buffer_pP
[
0
]
=
carrier
->
MIB
[
0
];
buffer_pP
[
1
]
=
carrier
->
MIB
[
1
];
buffer_pP
[
2
]
=
carrier
->
MIB
[
2
];
LOG_I
(
NR_RRC
,
"MIB PDU buffer_pP[0]=%x , buffer_pP[1]=%x, buffer_pP[2]=%x
\n
"
,
buffer_pP
[
0
],
buffer_pP
[
1
],
buffer_pP
[
2
]);
AssertFatal
(
enc_rval
.
encoded
>
0
,
"ASN1 message encoding failed (%s, %lu)!
\n
"
,
enc_rval
.
failed_type
->
name
,
enc_rval
.
encoded
);
return
(
3
);
...
...
@@ -59,4 +60,4 @@ int8_t mac_rrc_nr_data_req(const module_id_t Mod_idP,
return
(
0
);
}
\ No newline at end of file
}
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
0234d377
...
...
@@ -205,10 +205,11 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
mib
->
message
.
choice
.
mib
=
CALLOC
(
1
,
sizeof
(
struct
NR_MIB
));
memset
(
mib
->
message
.
choice
.
mib
,
0
,
sizeof
(
struct
NR_MIB
));
//36.331 SFN BIT STRING (SIZE (8) , 38.331 SFN BIT STRING (SIZE (6))
uint8_t
sfn
=
(
uint8_t
)((
frame
>>
4
)
&
0xff
);
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
buf
=
&
sfn
;
uint8_t
sfn_msb
=
(
uint8_t
)((
frame
>>
4
)
&
0x3f
);
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
buf
=
CALLOC
(
1
,
sizeof
(
uint8_t
));
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
buf
[
0
]
=
sfn_msb
<<
2
;
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
size
=
1
;
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
bits_unused
=
0
;
mib
->
message
.
choice
.
mib
->
systemFrameNumber
.
bits_unused
=
2
;
//38.331 spare BIT STRING (SIZE (1))
uint16_t
*
spare
=
calloc
(
1
,
sizeof
(
uint16_t
));
...
...
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