Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
4be69c93
Commit
4be69c93
authored
Jun 13, 2019
by
wujing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix assert issue when uci array is full if doing Attach/Detach
parent
40932409
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
37 additions
and
22 deletions
+37
-22
openair1/PHY/LTE_TRANSPORT/transport_eNB.h
openair1/PHY/LTE_TRANSPORT/transport_eNB.h
+2
-0
openair1/PHY/LTE_TRANSPORT/uci_tools.c
openair1/PHY/LTE_TRANSPORT/uci_tools.c
+1
-1
openair1/PHY/defs_eNB.h
openair1/PHY/defs_eNB.h
+1
-1
openair1/SCHED/fapi_l1.c
openair1/SCHED/fapi_l1.c
+3
-0
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+11
-11
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+13
-9
targets/COMMON/openairinterface5g_limits.h
targets/COMMON/openairinterface5g_limits.h
+6
-0
No files found.
openair1/PHY/LTE_TRANSPORT/transport_eNB.h
View file @
4be69c93
...
@@ -329,6 +329,8 @@ typedef struct {
...
@@ -329,6 +329,8 @@ typedef struct {
uint8_t
subframe
;
uint8_t
subframe
;
/// corresponding UE RNTI
/// corresponding UE RNTI
uint16_t
rnti
;
uint16_t
rnti
;
/// UE ID from Layer2
uint16_t
ue_id
;
/// Type (SR, HARQ, CQI, HARQ_SR, HARQ_CQI, SR_CQI, HARQ_SR_CQI)
/// Type (SR, HARQ, CQI, HARQ_SR, HARQ_CQI, SR_CQI, HARQ_SR_CQI)
UCI_type_t
type
;
UCI_type_t
type
;
/// SRS active flag
/// SRS active flag
...
...
openair1/PHY/LTE_TRANSPORT/uci_tools.c
View file @
4be69c93
...
@@ -41,7 +41,7 @@ int16_t find_uci(uint16_t rnti, int frame, int subframe, PHY_VARS_eNB *eNB,find_
...
@@ -41,7 +41,7 @@ int16_t find_uci(uint16_t rnti, int frame, int subframe, PHY_VARS_eNB *eNB,find_
uint16_t
i
;
uint16_t
i
;
int16_t
first_free_index
=-
1
;
int16_t
first_free_index
=-
1
;
AssertFatal
(
eNB
!=
NULL
,
"eNB is null
\n
"
);
AssertFatal
(
eNB
!=
NULL
,
"eNB is null
\n
"
);
for
(
i
=
0
;
i
<
NUMBER_OF_U
E
_MAX
;
i
++
)
{
for
(
i
=
0
;
i
<
NUMBER_OF_U
CI_VARS
_MAX
;
i
++
)
{
if
((
eNB
->
uci_vars
[
i
].
active
>
0
)
&&
if
((
eNB
->
uci_vars
[
i
].
active
>
0
)
&&
(
eNB
->
uci_vars
[
i
].
rnti
==
rnti
)
&&
(
eNB
->
uci_vars
[
i
].
rnti
==
rnti
)
&&
(
eNB
->
uci_vars
[
i
].
frame
==
frame
)
&&
(
eNB
->
uci_vars
[
i
].
frame
==
frame
)
&&
...
...
openair1/PHY/defs_eNB.h
View file @
4be69c93
...
@@ -946,7 +946,7 @@ typedef struct PHY_VARS_eNB_s {
...
@@ -946,7 +946,7 @@ typedef struct PHY_VARS_eNB_s {
LTE_eNB_PRACH
prach_vars_br
;
LTE_eNB_PRACH
prach_vars_br
;
#endif
#endif
LTE_eNB_COMMON
common_vars
;
LTE_eNB_COMMON
common_vars
;
LTE_eNB_UCI
uci_vars
[
NUMBER_OF_U
E
_MAX
];
LTE_eNB_UCI
uci_vars
[
NUMBER_OF_U
CI_VARS
_MAX
];
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_SRS
srs_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PBCH
pbch
;
LTE_eNB_PBCH
pbch
;
LTE_eNB_PUSCH
*
pusch_vars
[
NUMBER_OF_UE_MAX
];
LTE_eNB_PUSCH
*
pusch_vars
[
NUMBER_OF_UE_MAX
];
...
...
openair1/SCHED/fapi_l1.c
View file @
4be69c93
...
@@ -587,6 +587,7 @@ void handle_uci_sr_pdu(PHY_VARS_eNB *eNB,
...
@@ -587,6 +587,7 @@ void handle_uci_sr_pdu(PHY_VARS_eNB *eNB,
uci
->
frame
=
frame
;
uci
->
frame
=
frame
;
uci
->
subframe
=
subframe
;
uci
->
subframe
=
subframe
;
uci
->
rnti
=
ul_config_pdu
->
uci_sr_pdu
.
ue_information
.
ue_information_rel8
.
rnti
;
uci
->
rnti
=
ul_config_pdu
->
uci_sr_pdu
.
ue_information
.
ue_information_rel8
.
rnti
;
uci
->
ue_id
=
find_dlsch
(
ul_config_pdu
->
uci_sr_pdu
.
ue_information
.
ue_information_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
uci
->
type
=
SR
;
uci
->
type
=
SR
;
uci
->
pucch_fmt
=
pucch_format1
;
uci
->
pucch_fmt
=
pucch_format1
;
uci
->
num_antenna_ports
=
1
;
uci
->
num_antenna_ports
=
1
;
...
@@ -614,6 +615,7 @@ void handle_uci_sr_harq_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_
...
@@ -614,6 +615,7 @@ void handle_uci_sr_harq_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_
uci
->
frame
=
frame
;
uci
->
frame
=
frame
;
uci
->
subframe
=
subframe
;
uci
->
subframe
=
subframe
;
uci
->
rnti
=
ul_config_pdu
->
uci_sr_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
;
uci
->
rnti
=
ul_config_pdu
->
uci_sr_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
;
uci
->
ue_id
=
find_dlsch
(
ul_config_pdu
->
uci_sr_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
uci
->
type
=
HARQ_SR
;
uci
->
type
=
HARQ_SR
;
uci
->
num_antenna_ports
=
1
;
uci
->
num_antenna_ports
=
1
;
uci
->
num_pucch_resources
=
1
;
uci
->
num_pucch_resources
=
1
;
...
@@ -637,6 +639,7 @@ void handle_uci_harq_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_pdu
...
@@ -637,6 +639,7 @@ void handle_uci_harq_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_pdu
uci
->
frame
=
frame
;
uci
->
frame
=
frame
;
uci
->
subframe
=
subframe
;
uci
->
subframe
=
subframe
;
uci
->
rnti
=
ul_config_pdu
->
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
;
uci
->
rnti
=
ul_config_pdu
->
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
;
uci
->
ue_id
=
find_dlsch
(
ul_config_pdu
->
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
);
uci
->
type
=
HARQ
;
uci
->
type
=
HARQ
;
uci
->
srs_active
=
srs_active
;
uci
->
srs_active
=
srs_active
;
uci
->
num_antenna_ports
=
ul_config_pdu
->
uci_harq_pdu
.
harq_information
.
harq_information_rel11
.
num_ant_ports
;
uci
->
num_antenna_ports
=
ul_config_pdu
->
uci_harq_pdu
.
harq_information
.
harq_information_rel11
.
num_ant_ports
;
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
4be69c93
...
@@ -639,7 +639,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -639,7 +639,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
LTE_eNB_UCI
*
uci
=
NULL
;
LTE_eNB_UCI
*
uci
=
NULL
;
LTE_DL_FRAME_PARMS
*
fp
=
&
(
eNB
->
frame_parms
);
LTE_DL_FRAME_PARMS
*
fp
=
&
(
eNB
->
frame_parms
);
for
(
int
i
=
0
;
i
<
NUMBER_OF_U
E
_MAX
;
i
++
)
{
for
(
int
i
=
0
;
i
<
NUMBER_OF_U
CI_VARS
_MAX
;
i
++
)
{
uci
=
&
(
eNB
->
uci_vars
[
i
]);
uci
=
&
(
eNB
->
uci_vars
[
i
]);
if
((
uci
->
active
==
1
)
&&
(
uci
->
frame
==
frame
)
&&
(
uci
->
subframe
==
subframe
))
{
if
((
uci
->
active
==
1
)
&&
(
uci
->
frame
==
frame
)
&&
(
uci
->
subframe
==
subframe
))
{
...
@@ -687,7 +687,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -687,7 +687,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
int
pucch1_thres
=
(
uci
->
ue_type
==
0
)
?
eNB
->
pucch1_DTX_threshold
:
eNB
->
pucch1_DTX_threshold_emtc
[
0
];
int
pucch1_thres
=
(
uci
->
ue_type
==
0
)
?
eNB
->
pucch1_DTX_threshold
:
eNB
->
pucch1_DTX_threshold_emtc
[
0
];
metric_SR
=
rx_pucch
(
eNB
,
metric_SR
=
rx_pucch
(
eNB
,
uci
->
pucch_fmt
,
uci
->
pucch_fmt
,
i
,
uci
->
ue_id
,
uci
->
n_pucch_1_0_sr
[
0
],
uci
->
n_pucch_1_0_sr
[
0
],
0
,
// n2_pucch
0
,
// n2_pucch
uci
->
srs_active
,
// shortened format
uci
->
srs_active
,
// shortened format
...
@@ -729,7 +729,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -729,7 +729,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
SR_payload
);
SR_payload
);
metric
[
0
]
=
rx_pucch
(
eNB
,
metric
[
0
]
=
rx_pucch
(
eNB
,
uci
->
pucch_fmt
,
uci
->
pucch_fmt
,
i
,
uci
->
ue_id
,
uci
->
n_pucch_1
[
0
][
0
],
uci
->
n_pucch_1
[
0
][
0
],
0
,
//n2_pucch
0
,
//n2_pucch
uci
->
srs_active
,
// shortened format
uci
->
srs_active
,
// shortened format
...
@@ -753,7 +753,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -753,7 +753,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
SR_payload
=
1
;
SR_payload
=
1
;
metric
[
0
]
=
rx_pucch
(
eNB
,
metric
[
0
]
=
rx_pucch
(
eNB
,
uci
->
pucch_fmt
,
uci
->
pucch_fmt
,
i
,
uci
->
ue_id
,
uci
->
n_pucch_1_0_sr
[
0
],
uci
->
n_pucch_1_0_sr
[
0
],
0
,
//n2_pucch
0
,
//n2_pucch
uci
->
srs_active
,
// shortened format
uci
->
srs_active
,
// shortened format
...
@@ -783,7 +783,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -783,7 +783,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
#if 1
#if 1
metric
[
0
]
=
rx_pucch
(
eNB
,
metric
[
0
]
=
rx_pucch
(
eNB
,
uci
->
pucch_fmt
,
uci
->
pucch_fmt
,
i
,
uci
->
ue_id
,
uci
->
n_pucch_1
[
0
][
0
],
uci
->
n_pucch_1
[
0
][
0
],
0
,
//n2_pucch
0
,
//n2_pucch
uci
->
srs_active
,
// shortened format
uci
->
srs_active
,
// shortened format
...
@@ -803,7 +803,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -803,7 +803,7 @@ uci_procedures(PHY_VARS_eNB *eNB,
SR_payload
=
1
;
SR_payload
=
1
;
metric
[
0
]
=
rx_pucch
(
eNB
,
metric
[
0
]
=
rx_pucch
(
eNB
,
pucch_format1b
,
pucch_format1b
,
i
,
uci
->
ue_id
,
uci
->
n_pucch_1_0_sr
[
0
],
uci
->
n_pucch_1_0_sr
[
0
],
0
,
//n2_pucch
0
,
//n2_pucch
uci
->
srs_active
,
// shortened format
uci
->
srs_active
,
// shortened format
...
@@ -1142,11 +1142,11 @@ uci_procedures(PHY_VARS_eNB *eNB,
...
@@ -1142,11 +1142,11 @@ uci_procedures(PHY_VARS_eNB *eNB,
if
(
SR_payload
==
1
)
{
if
(
SR_payload
==
1
)
{
LOG_D
(
PHY
,
"[eNB %d][SR %x] Frame %d subframe %d Got SR for PUSCH, transmitting to MAC
\n
"
,
eNB
->
Mod_id
,
uci
->
rnti
,
frame
,
subframe
);
LOG_D
(
PHY
,
"[eNB %d][SR %x] Frame %d subframe %d Got SR for PUSCH, transmitting to MAC
\n
"
,
eNB
->
Mod_id
,
uci
->
rnti
,
frame
,
subframe
);
if
(
eNB
->
first_sr
[
i
]
==
1
)
{
// this is the first request for uplink after Connection Setup, so clear HARQ process 0 use for Msg4
if
(
eNB
->
first_sr
[
uci
->
ue_id
]
==
1
)
{
// this is the first request for uplink after Connection Setup, so clear HARQ process 0 use for Msg4
eNB
->
first_sr
[
i
]
=
0
;
eNB
->
first_sr
[
uci
->
ue_id
]
=
0
;
eNB
->
dlsch
[
i
][
0
]
->
harq_processes
[
0
]
->
round
=
0
;
eNB
->
dlsch
[
uci
->
ue_id
][
0
]
->
harq_processes
[
0
]
->
round
=
0
;
eNB
->
dlsch
[
i
][
0
]
->
harq_processes
[
0
]
->
status
=
SCH_IDLE
;
eNB
->
dlsch
[
uci
->
ue_id
][
0
]
->
harq_processes
[
0
]
->
status
=
SCH_IDLE
;
LOG_D
(
PHY
,
"[eNB %d][SR %x] Frame %d subframe %d First SR
\n
"
,
eNB
->
Mod_id
,
eNB
->
ulsch
[
i
]
->
rnti
,
frame
,
subframe
);
LOG_D
(
PHY
,
"[eNB %d][SR %x] Frame %d subframe %d First SR
\n
"
,
eNB
->
Mod_id
,
eNB
->
ulsch
[
uci
->
ue_id
]
->
rnti
,
frame
,
subframe
);
}
}
}
}
}
}
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
4be69c93
...
@@ -1023,28 +1023,32 @@ void release_UE_in_freeList(module_id_t mod_id) {
...
@@ -1023,28 +1023,32 @@ void release_UE_in_freeList(module_id_t mod_id) {
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
ulsch
=
eNB_PHY
->
ulsch
[
i
];
ulsch
=
eNB_PHY
->
ulsch
[
i
];
if
((
ulsch
!=
NULL
)
&&
(
ulsch
->
rnti
==
rnti
))
{
if
((
ulsch
!=
NULL
)
&&
(
ulsch
->
rnti
==
rnti
))
{
void
clean_eNb_ulsch
(
LTE_eNB_ULSCH_t
*
ulsch
);
void
clean_eNb_ulsch
(
LTE_eNB_ULSCH_t
*
ulsch
);
LOG_I
(
RRC
,
"clean_eNb_ulsch ulsch[%d] UE %x
\n
"
,
i
,
rnti
);
LOG_I
(
RRC
,
"clean_eNb_ulsch ulsch[%d] UE %x
\n
"
,
i
,
rnti
);
clean_eNb_ulsch
(
ulsch
);
clean_eNb_ulsch
(
ulsch
);
}
}
if
(
eNB_PHY
->
uci_vars
[
i
].
rnti
==
rnti
)
{
LOG_I
(
MAC
,
"clean eNb uci_vars[%d] UE %x
\n
"
,
i
,
rnti
);
memset
(
&
eNB_PHY
->
uci_vars
[
i
],
0
,
sizeof
(
LTE_eNB_UCI
));
}
}
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
dlsch
=
eNB_PHY
->
dlsch
[
i
][
0
];
dlsch
=
eNB_PHY
->
dlsch
[
i
][
0
];
if
((
dlsch
!=
NULL
)
&&
(
dlsch
->
rnti
==
rnti
))
{
if
((
dlsch
!=
NULL
)
&&
(
dlsch
->
rnti
==
rnti
))
{
void
clean_eNb_dlsch
(
LTE_eNB_DLSCH_t
*
dlsch
);
void
clean_eNb_dlsch
(
LTE_eNB_DLSCH_t
*
dlsch
);
LOG_I
(
RRC
,
"clean_eNb_dlsch dlsch[%d] UE %x
\n
"
,
i
,
rnti
);
LOG_I
(
RRC
,
"clean_eNb_dlsch dlsch[%d] UE %x
\n
"
,
i
,
rnti
);
clean_eNb_dlsch
(
dlsch
);
clean_eNb_dlsch
(
dlsch
);
}
}
}
}
ulsch
=
eNB_PHY
->
ulsch
[
i
];
if
((
ulsch
!=
NULL
)
&&
(
ulsch
->
rnti
==
rnti
))
{
void
clean_eNb_ulsch
(
LTE_eNB_ULSCH_t
*
ulsch
);
LOG_I
(
RRC
,
"clean_eNb_ulsch ulsch[%d] UE %x
\n
"
,
i
,
rnti
);
clean_eNb_ulsch
(
ulsch
);
}
for
(
i
=
0
;
i
<
NUMBER_OF_UCI_VARS_MAX
;
i
++
)
{
if
(
eNB_PHY
->
uci_vars
[
i
].
rnti
==
rnti
)
{
LOG_I
(
MAC
,
"clean eNb uci_vars[%d] UE %x
\n
"
,
i
,
rnti
);
memset
(
&
eNB_PHY
->
uci_vars
[
i
],
0
,
sizeof
(
LTE_eNB_UCI
));
}
}
if
(
flexran_agent_get_rrc_xface
(
mod_id
))
{
if
(
flexran_agent_get_rrc_xface
(
mod_id
))
{
flexran_agent_get_rrc_xface
(
mod_id
)
->
flexran_agent_notify_ue_state_change
(
flexran_agent_get_rrc_xface
(
mod_id
)
->
flexran_agent_notify_ue_state_change
(
...
...
targets/COMMON/openairinterface5g_limits.h
View file @
4be69c93
...
@@ -12,13 +12,16 @@
...
@@ -12,13 +12,16 @@
// This problem will be fixed in the future.
// This problem will be fixed in the future.
# ifndef UESIM_EXPANSION
# ifndef UESIM_EXPANSION
# define NUMBER_OF_UE_MAX 16
# define NUMBER_OF_UE_MAX 16
# define NUMBER_OF_UCI_VARS_MAX 56
# define NUMBER_OF_CONNECTED_eNB_MAX 3
# define NUMBER_OF_CONNECTED_eNB_MAX 3
# else
# else
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UCI_VARS_MAX 256
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# endif
# endif
# else
# else
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UCI_VARS_MAX 256
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# endif
# endif
#else
#else
...
@@ -32,13 +35,16 @@ and the other are using MAX_MOBILES_PER_ENB in for-loop.
...
@@ -32,13 +35,16 @@ and the other are using MAX_MOBILES_PER_ENB in for-loop.
*/
*/
# ifndef UESIM_EXPANSION
# ifndef UESIM_EXPANSION
# define NUMBER_OF_UE_MAX 16
# define NUMBER_OF_UE_MAX 16
# define NUMBER_OF_UCI_VARS_MAX 56
# define NUMBER_OF_CONNECTED_eNB_MAX 3
# define NUMBER_OF_CONNECTED_eNB_MAX 3
# else
# else
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UCI_VARS_MAX 256
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# endif
# endif
# else
# else
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UE_MAX 256
# define NUMBER_OF_UCI_VARS_MAX 256
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# define NUMBER_OF_CONNECTED_eNB_MAX 1
# endif
# endif
# if defined(STANDALONE) && STANDALONE==1
# if defined(STANDALONE) && STANDALONE==1
...
...
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