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
canghaiwuhen
OpenXG-RAN
Commits
aa50fcf0
Commit
aa50fcf0
authored
Mar 18, 2016
by
Xenofon Foukas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed HARQ reporting to agent and changed sf trigger to report the upcoming subframe
parent
74819596
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
79 additions
and
10 deletions
+79
-10
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+14
-0
openair2/ENB_APP/enb_agent.c
openair2/ENB_APP/enb_agent.c
+7
-0
openair2/ENB_APP/enb_agent_common.c
openair2/ENB_APP/enb_agent_common.c
+26
-0
openair2/ENB_APP/enb_agent_common.h
openair2/ENB_APP/enb_agent_common.h
+2
-0
openair2/ENB_APP/enb_agent_mac.c
openair2/ENB_APP/enb_agent_mac.c
+22
-4
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+8
-6
No files found.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
aa50fcf0
...
@@ -67,6 +67,12 @@
...
@@ -67,6 +67,12 @@
# endif
# endif
#endif
#endif
//Agent-related headers
#include "ENB_APP/enb_agent_extern.h"
#include "ENB_APP/enb_agent_mac.h"
#include "LAYER2/MAC/enb_agent_mac_proto.h"
//#define DIAG_PHY
//#define DIAG_PHY
#define NS_PER_SLOT 500000
#define NS_PER_SLOT 500000
...
@@ -1411,6 +1417,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
...
@@ -1411,6 +1417,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#endif
#endif
#endif
#endif
if
(
abstraction_flag
==
0
)
{
if
(
abstraction_flag
==
0
)
{
start_meas
(
&
phy_vars_eNB
->
dlsch_encoding_stats
);
start_meas
(
&
phy_vars_eNB
->
dlsch_encoding_stats
);
...
@@ -1603,6 +1610,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
...
@@ -1603,6 +1610,13 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
phy_vars_eNB
->
dlsch_eNB_ra
->
active
=
0
;
phy_vars_eNB
->
dlsch_eNB_ra
->
active
=
0
;
}
}
#ifndef DISABLE_SF_TRIGGER
//Send subframe trigger to the controller
if
(
mac_agent_registered
[
phy_vars_eNB
->
Mod_id
])
{
agent_mac_xface
[
phy_vars_eNB
->
Mod_id
]
->
enb_agent_send_sf_trigger
(
phy_vars_eNB
->
Mod_id
);
}
#endif
// Now scan UE specific DLSCH
// Now scan UE specific DLSCH
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
for
(
UE_id
=
0
;
UE_id
<
NUMBER_OF_UE_MAX
;
UE_id
++
)
{
{
...
...
openair2/ENB_APP/enb_agent.c
View file @
aa50fcf0
...
@@ -180,6 +180,13 @@ pthread_t new_thread(void *(*f)(void *), void *b) {
...
@@ -180,6 +180,13 @@ pthread_t new_thread(void *(*f)(void *), void *b) {
fprintf
(
stderr
,
"pthread_attr_init err
\n
"
);
fprintf
(
stderr
,
"pthread_attr_init err
\n
"
);
exit
(
1
);
exit
(
1
);
}
}
struct
sched_param
sched_param_recv_thread
;
sched_param_recv_thread
.
sched_priority
=
sched_get_priority_max
(
SCHED_FIFO
)
-
1
;
pthread_attr_setschedparam
(
&
att
,
&
sched_param_recv_thread
);
pthread_attr_setschedpolicy
(
&
att
,
SCHED_FIFO
);
if
(
pthread_attr_setdetachstate
(
&
att
,
PTHREAD_CREATE_DETACHED
))
{
if
(
pthread_attr_setdetachstate
(
&
att
,
PTHREAD_CREATE_DETACHED
))
{
fprintf
(
stderr
,
"pthread_attr_setdetachstate err
\n
"
);
fprintf
(
stderr
,
"pthread_attr_setdetachstate err
\n
"
);
exit
(
1
);
exit
(
1
);
...
...
openair2/ENB_APP/enb_agent_common.c
View file @
aa50fcf0
...
@@ -514,6 +514,32 @@ uint16_t get_sfn_sf (mid_t mod_id) {
...
@@ -514,6 +514,32 @@ uint16_t get_sfn_sf (mid_t mod_id) {
return
sfn_sf
;
return
sfn_sf
;
}
}
uint16_t
get_future_sfn_sf
(
mid_t
mod_id
,
int
ahead_of_time
)
{
frame_t
frame
;
sub_frame_t
subframe
;
uint16_t
sfn_sf
,
frame_mask
,
sf_mask
;
frame
=
(
frame_t
)
get_current_system_frame_num
(
mod_id
);
subframe
=
(
sub_frame_t
)
get_current_subframe
(
mod_id
);
subframe
=
((
subframe
+
ahead_of_time
)
%
10
);
int
full_frames_ahead
=
((
ahead_of_time
/
10
)
%
10
);
frame
=
frame
+
full_frames_ahead
;
if
(
subframe
<
get_current_subframe
(
mod_id
))
{
frame
++
;
}
frame_mask
=
((
1
<<
12
)
-
1
);
sf_mask
=
((
1
<<
4
)
-
1
);
sfn_sf
=
(
subframe
&
sf_mask
)
|
((
frame
&
frame_mask
)
<<
4
);
return
sfn_sf
;
}
int
get_num_ues
(
mid_t
mod_id
){
int
get_num_ues
(
mid_t
mod_id
){
return
((
UE_list_t
*
)
enb_ue
[
mod_id
])
->
num_UEs
;
return
((
UE_list_t
*
)
enb_ue
[
mod_id
])
->
num_UEs
;
...
...
openair2/ENB_APP/enb_agent_common.h
View file @
aa50fcf0
...
@@ -145,6 +145,8 @@ unsigned int get_current_subframe(mid_t mod_id);
...
@@ -145,6 +145,8 @@ unsigned int get_current_subframe(mid_t mod_id);
Bits 0-3 subframe, rest for frame. Required by progRAN protocol*/
Bits 0-3 subframe, rest for frame. Required by progRAN protocol*/
uint16_t
get_sfn_sf
(
mid_t
mod_id
);
uint16_t
get_sfn_sf
(
mid_t
mod_id
);
uint16_t
get_future_sfn_sf
(
mid_t
mod_id
,
int
ahead_of_time
);
int
get_num_ues
(
mid_t
mod_id
);
int
get_num_ues
(
mid_t
mod_id
);
int
get_ue_crnti
(
mid_t
mod_id
,
mid_t
ue_id
);
int
get_ue_crnti
(
mid_t
mod_id
,
mid_t
ue_id
);
...
...
openair2/ENB_APP/enb_agent_mac.c
View file @
aa50fcf0
...
@@ -947,9 +947,27 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran
...
@@ -947,9 +947,27 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran
}
}
protocol__prp_sf_trigger__init
(
sf_trigger_msg
);
protocol__prp_sf_trigger__init
(
sf_trigger_msg
);
frame_t
frame
;
sub_frame_t
subframe
;
int
ahead_of_time
=
1
;
frame
=
(
frame_t
)
get_current_system_frame_num
(
mod_id
);
subframe
=
(
sub_frame_t
)
get_current_subframe
(
mod_id
);
subframe
=
((
subframe
+
ahead_of_time
)
%
10
);
int
full_frames_ahead
=
((
ahead_of_time
/
10
)
%
10
);
frame
=
frame
+
full_frames_ahead
;
if
(
subframe
<
get_current_subframe
(
mod_id
))
{
frame
++
;
}
sf_trigger_msg
->
header
=
header
;
sf_trigger_msg
->
header
=
header
;
sf_trigger_msg
->
has_sfn_sf
=
1
;
sf_trigger_msg
->
has_sfn_sf
=
1
;
sf_trigger_msg
->
sfn_sf
=
get_
sfn_sf
(
mod_id
);
sf_trigger_msg
->
sfn_sf
=
get_
future_sfn_sf
(
mod_id
,
1
);
/*TODO: Fill in the number of dl HARQ related info, based on the number of currently
/*TODO: Fill in the number of dl HARQ related info, based on the number of currently
*transmitting UEs
*transmitting UEs
...
@@ -973,7 +991,7 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran
...
@@ -973,7 +991,7 @@ int enb_agent_mac_sf_trigger(mid_t mod_id, const void *params, Protocol__Progran
/*TODO: fill in the right id of this round's HARQ process for this UE*/
/*TODO: fill in the right id of this round's HARQ process for this UE*/
int
harq_id
;
int
harq_id
;
int
harq_status
;
int
harq_status
;
get_harq
(
mod_id
,
UE_PCCID
(
mod_id
,
i
),
i
,
get_current_frame
(
mod_id
),
get_current_subframe
(
mod_id
),
&
harq_id
,
&
harq_status
);
get_harq
(
mod_id
,
UE_PCCID
(
mod_id
,
i
),
i
,
frame
,
subframe
,
&
harq_id
,
&
harq_status
);
dl_info
[
i
]
->
harq_process_id
=
harq_id
;
dl_info
[
i
]
->
harq_process_id
=
harq_id
;
dl_info
[
i
]
->
has_harq_process_id
=
1
;
dl_info
[
i
]
->
has_harq_process_id
=
1
;
/*TODO: fill in the status of the HARQ process (2 TBs)*/
/*TODO: fill in the status of the HARQ process (2 TBs)*/
...
@@ -1369,8 +1387,8 @@ int enb_agent_register_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
...
@@ -1369,8 +1387,8 @@ int enb_agent_register_mac_xface(mid_t mod_id, AGENT_MAC_xface *xface) {
xface
->
enb_agent_send_sr_info
=
enb_agent_send_sr_info
;
xface
->
enb_agent_send_sr_info
=
enb_agent_send_sr_info
;
xface
->
enb_agent_send_sf_trigger
=
enb_agent_send_sf_trigger
;
xface
->
enb_agent_send_sf_trigger
=
enb_agent_send_sf_trigger
;
xface
->
enb_agent_send_update_mac_stats
=
enb_agent_send_update_mac_stats
;
xface
->
enb_agent_send_update_mac_stats
=
enb_agent_send_update_mac_stats
;
xface
->
enb_agent_schedule_ue_spec
=
schedule_ue_spec_default
;
//
xface->enb_agent_schedule_ue_spec = schedule_ue_spec_default;
//
xface->enb_agent_schedule_ue_spec = schedule_ue_spec_remote;
xface
->
enb_agent_schedule_ue_spec
=
schedule_ue_spec_remote
;
xface
->
enb_agent_get_pending_dl_mac_config
=
enb_agent_get_pending_dl_mac_config
;
xface
->
enb_agent_get_pending_dl_mac_config
=
enb_agent_get_pending_dl_mac_config
;
xface
->
enb_agent_notify_ue_state_change
=
enb_agent_ue_state_change
;
xface
->
enb_agent_notify_ue_state_change
=
enb_agent_ue_state_change
;
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
aa50fcf0
...
@@ -216,12 +216,12 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
...
@@ -216,12 +216,12 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
}
}
#ifndef DISABLE_SF_TRIGGER
/* #ifndef DISABLE_SF_TRIGGER */
//Send subframe trigger to the controller
/* //Send subframe trigger to the controller */
if
(
mac_agent_registered
[
module_idP
])
{
/* if (mac_agent_registered[module_idP]) { */
agent_mac_xface
[
module_idP
]
->
enb_agent_send_sf_trigger
(
module_idP
);
/* agent_mac_xface[module_idP]->enb_agent_send_sf_trigger(module_idP); */
}
/* } */
#endif
/* #endif */
//if (subframeP%5 == 0)
//if (subframeP%5 == 0)
//#ifdef EXMIMO
//#ifdef EXMIMO
...
@@ -971,6 +971,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
...
@@ -971,6 +971,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
allocate_CCEs
(
module_idP
,
CC_id
,
subframeP
,
0
);
allocate_CCEs
(
module_idP
,
CC_id
,
subframeP
,
0
);
#ifndef DISABLE_CONT_STATS
#ifndef DISABLE_CONT_STATS
//Send subframe trigger to the controller
//Send subframe trigger to the controller
if
(
mac_agent_registered
[
module_idP
])
{
if
(
mac_agent_registered
[
module_idP
])
{
...
@@ -978,6 +979,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
...
@@ -978,6 +979,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
}
}
#endif
#endif
LOG_D
(
MAC
,
"frameP %d, subframeP %d
\n
"
,
frameP
,
subframeP
);
LOG_D
(
MAC
,
"frameP %d, subframeP %d
\n
"
,
frameP
,
subframeP
);
stop_meas
(
&
eNB_mac_inst
[
module_idP
].
eNB_scheduler
);
stop_meas
(
&
eNB_mac_inst
[
module_idP
].
eNB_scheduler
);
...
...
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