Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
oai
openairinterface5G
Commits
aa50fcf0
Commit
aa50fcf0
authored
Mar 18, 2016
by
Xenofon Foukas
Browse files
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
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
aa50fcf0
...
...
@@ -67,6 +67,12 @@
# 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 NS_PER_SLOT 500000
...
...
@@ -1411,6 +1417,7 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
#endif
#endif
if
(
abstraction_flag
==
0
)
{
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
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
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) {
fprintf
(
stderr
,
"pthread_attr_init err
\n
"
);
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
))
{
fprintf
(
stderr
,
"pthread_attr_setdetachstate err
\n
"
);
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) {
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
){
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);
Bits 0-3 subframe, rest for frame. Required by progRAN protocol*/
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_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
}
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
->
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
*transmitting UEs
...
...
@@ -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*/
int
harq_id
;
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
]
->
has_harq_process_id
=
1
;
/*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) {
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_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_remote;
//
xface->enb_agent_schedule_ue_spec = schedule_ue_spec_default;
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_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,
}
#ifndef DISABLE_SF_TRIGGER
//Send subframe trigger to the controller
if
(
mac_agent_registered
[
module_idP
])
{
agent_mac_xface
[
module_idP
]
->
enb_agent_send_sf_trigger
(
module_idP
);
}
#endif
/*
#ifndef DISABLE_SF_TRIGGER
*/
/*
//Send subframe trigger to the controller
*/
/*
if (mac_agent_registered[module_idP]) {
*/
/*
agent_mac_xface[module_idP]->enb_agent_send_sf_trigger(module_idP);
*/
/* } */
/*
#endif
*/
//if (subframeP%5 == 0)
//#ifdef EXMIMO
...
...
@@ -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
++
)
allocate_CCEs
(
module_idP
,
CC_id
,
subframeP
,
0
);
#ifndef DISABLE_CONT_STATS
//Send subframe trigger to the controller
if
(
mac_agent_registered
[
module_idP
])
{
...
...
@@ -978,6 +979,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
}
#endif
LOG_D
(
MAC
,
"frameP %d, subframeP %d
\n
"
,
frameP
,
subframeP
);
stop_meas
(
&
eNB_mac_inst
[
module_idP
].
eNB_scheduler
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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