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
lizhongxiao
OpenXG UE
Commits
56a71f38
Commit
56a71f38
authored
Sep 20, 2018
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PROTO_AGENT: don't send ACKs, formatting
parent
3d861883
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
146 additions
and
245 deletions
+146
-245
openair2/LAYER2/PROTO_AGENT/proto_agent.h
openair2/LAYER2/PROTO_AGENT/proto_agent.h
+3
-1
openair2/LAYER2/PROTO_AGENT/proto_agent_common.c
openair2/LAYER2/PROTO_AGENT/proto_agent_common.c
+129
-226
openair2/LAYER2/PROTO_AGENT/proto_agent_common.h
openair2/LAYER2/PROTO_AGENT/proto_agent_common.h
+3
-5
openair2/LAYER2/PROTO_AGENT/proto_agent_handler.c
openair2/LAYER2/PROTO_AGENT/proto_agent_handler.c
+11
-13
No files found.
openair2/LAYER2/PROTO_AGENT/proto_agent.h
View file @
56a71f38
...
@@ -37,8 +37,10 @@
...
@@ -37,8 +37,10 @@
#ifndef PROTO_AGENT_H_
#ifndef PROTO_AGENT_H_
#define PROTO_AGENT_H_
#define PROTO_AGENT_H_
#include "proto_agent_common.h"
#include "ENB_APP/enb_config.h" // for enb properties
#include "ENB_APP/enb_config.h" // for enb properties
/* avoid warnings */
#undef NUM_MAX_ENB
#include "proto_agent_common.h"
void
*
proto_agent_receive
(
void
*
args
);
void
*
proto_agent_receive
(
void
*
args
);
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_common.c
View file @
56a71f38
...
@@ -38,8 +38,10 @@
...
@@ -38,8 +38,10 @@
#include <dlfcn.h>
#include <dlfcn.h>
#include <time.h>
#include <time.h>
#include "proto_agent_common.h"
#include "PHY/phy_extern.h"
#include "PHY/phy_extern.h"
/* avoid warnings */
#undef NUM_MAX_ENB
#include "proto_agent_common.h"
#include "common/utils/LOG/log.h"
#include "common/utils/LOG/log.h"
#include "RRC/LTE/rrc_extern.h"
#include "RRC/LTE/rrc_extern.h"
...
@@ -78,7 +80,8 @@ void read_dl_data_header(int *pdu_type, int *spare, int *seqno, uint32_t header)
...
@@ -78,7 +80,8 @@ void read_dl_data_header(int *pdu_type, int *spare, int *seqno, uint32_t header)
return
;
return
;
}
}
int
f1u_serialize_message
(
Protocol__F1uMessage
*
msg
,
void
**
buf
,
int
*
size
){
int
f1u_serialize_message
(
Protocol__F1uMessage
*
msg
,
void
**
buf
,
int
*
size
)
{
*
size
=
protocol__f1u_message__get_packed_size
(
msg
);
*
size
=
protocol__f1u_message__get_packed_size
(
msg
);
*
buf
=
malloc
(
*
size
);
*
buf
=
malloc
(
*
size
);
...
@@ -95,7 +98,8 @@ int f1u_serialize_message(Protocol__F1uMessage *msg, void **buf,int *size){
...
@@ -95,7 +98,8 @@ int f1u_serialize_message(Protocol__F1uMessage *msg, void **buf,int *size){
}
}
int
f1u_deserialize_message
(
void
*
data
,
int
size
,
Protocol__F1uMessage
**
msg
)
{
int
f1u_deserialize_message
(
void
*
data
,
int
size
,
Protocol__F1uMessage
**
msg
)
{
*
msg
=
protocol__f1u_message__unpack
(
NULL
,
size
,
data
);
*
msg
=
protocol__f1u_message__unpack
(
NULL
,
size
,
data
);
if
(
*
msg
==
NULL
)
if
(
*
msg
==
NULL
)
goto
error
;
goto
error
;
...
@@ -107,8 +111,8 @@ int f1u_deserialize_message(void *data, int size, Protocol__F1uMessage **msg) {
...
@@ -107,8 +111,8 @@ int f1u_deserialize_message(void *data, int size, Protocol__F1uMessage **msg) {
return
-
1
;
return
-
1
;
}
}
int
f1u_dl_data_create_header
(
uint32_t
pdu_type
,
uint32_t
f1u_sn
,
Protocol__DlDataHeader
**
header
)
{
int
f1u_dl_data_create_header
(
uint32_t
pdu_type
,
uint32_t
f1u_sn
,
Protocol__DlDataHeader
**
header
)
{
*
header
=
malloc
(
sizeof
(
Protocol__DlDataHeader
));
*
header
=
malloc
(
sizeof
(
Protocol__DlDataHeader
));
if
(
*
header
==
NULL
)
if
(
*
header
==
NULL
)
goto
error
;
goto
error
;
...
@@ -126,7 +130,6 @@ int f1u_dl_data_create_header(uint32_t pdu_type, uint32_t f1u_sn, Protocol__DlDa
...
@@ -126,7 +130,6 @@ int f1u_dl_data_create_header(uint32_t pdu_type, uint32_t f1u_sn, Protocol__DlDa
int
f1u_dl_data
(
const
void
*
params
,
Protocol__F1uMessage
**
msg
)
int
f1u_dl_data
(
const
void
*
params
,
Protocol__F1uMessage
**
msg
)
{
{
// Initialize the PDCP params
// Initialize the PDCP params
dl_data_args
*
args
=
(
dl_data_args
*
)
params
;
dl_data_args
*
args
=
(
dl_data_args
*
)
params
;
...
@@ -171,11 +174,10 @@ int f1u_dl_data(const void *params, Protocol__F1uMessage **msg)
...
@@ -171,11 +174,10 @@ int f1u_dl_data(const void *params, Protocol__F1uMessage **msg)
free
(
*
msg
);
free
(
*
msg
);
LOG_E
(
F1U
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
LOG_E
(
F1U
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
return
-
1
;
}
}
int
proto_agent_serialize_message
(
Protocol__FlexsplitMessage
*
msg
,
uint8_t
**
buf
,
int
*
size
)
{
int
proto_agent_serialize_message
(
Protocol__FlexsplitMessage
*
msg
,
uint8_t
**
buf
,
int
*
size
)
{
*
size
=
protocol__flexsplit_message__get_packed_size
(
msg
);
*
size
=
protocol__flexsplit_message__get_packed_size
(
msg
);
*
buf
=
malloc
(
*
size
);
*
buf
=
malloc
(
*
size
);
...
@@ -193,7 +195,8 @@ int proto_agent_serialize_message(Protocol__FlexsplitMessage *msg, uint8_t **buf
...
@@ -193,7 +195,8 @@ int proto_agent_serialize_message(Protocol__FlexsplitMessage *msg, uint8_t **buf
/* We assume that the buffer size is equal to the message size.
/* We assume that the buffer size is equal to the message size.
Should be chekced durint Tx/Rx */
Should be chekced durint Tx/Rx */
int
proto_agent_deserialize_message
(
void
*
data
,
int
size
,
Protocol__FlexsplitMessage
**
msg
)
{
int
proto_agent_deserialize_message
(
void
*
data
,
int
size
,
Protocol__FlexsplitMessage
**
msg
)
{
*
msg
=
protocol__flexsplit_message__unpack
(
NULL
,
size
,
data
);
*
msg
=
protocol__flexsplit_message__unpack
(
NULL
,
size
,
data
);
if
(
*
msg
==
NULL
)
if
(
*
msg
==
NULL
)
goto
error
;
goto
error
;
...
@@ -205,8 +208,8 @@ int proto_agent_deserialize_message(void *data, int size, Protocol__FlexsplitMes
...
@@ -205,8 +208,8 @@ int proto_agent_deserialize_message(void *data, int size, Protocol__FlexsplitMes
return
-
1
;
return
-
1
;
}
}
int
fsp_create_header
(
xid_t
xid
,
Protocol__FspType
type
,
Protocol__FspHeader
**
header
)
{
int
fsp_create_header
(
xid_t
xid
,
Protocol__FspType
type
,
Protocol__FspHeader
**
header
)
{
*
header
=
malloc
(
sizeof
(
Protocol__FspHeader
));
*
header
=
malloc
(
sizeof
(
Protocol__FspHeader
));
if
(
*
header
==
NULL
)
if
(
*
header
==
NULL
)
goto
error
;
goto
error
;
...
@@ -271,7 +274,7 @@ int proto_agent_pdcp_data_req(mod_id_t mod_id, const void *params, Protocol__Fle
...
@@ -271,7 +274,7 @@ int proto_agent_pdcp_data_req(mod_id_t mod_id, const void *params, Protocol__Fle
pdu
->
fsp_pdu_data
.
data
=
malloc
(
args
->
sdu_size
);
pdu
->
fsp_pdu_data
.
data
=
malloc
(
args
->
sdu_size
);
pdu
->
fsp_pdu_data
.
len
=
args
->
sdu_size
;
pdu
->
fsp_pdu_data
.
len
=
args
->
sdu_size
;
memcpy
(
pdu
->
fsp_pdu_data
.
data
,
args
->
sdu_p
,
args
->
sdu_size
);
memcpy
(
pdu
->
fsp_pdu_data
.
data
,
args
->
sdu_p
->
data
,
args
->
sdu_size
);
pdu
->
has_fsp_pdu_data
=
1
;
pdu
->
has_fsp_pdu_data
=
1
;
// Copy data to the ctxt structure
// Copy data to the ctxt structure
...
@@ -342,7 +345,6 @@ int proto_agent_pdcp_data_req(mod_id_t mod_id, const void *params, Protocol__Fle
...
@@ -342,7 +345,6 @@ int proto_agent_pdcp_data_req(mod_id_t mod_id, const void *params, Protocol__Fle
free
(
*
msg
);
free
(
*
msg
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
return
-
1
;
}
}
int
proto_agent_destroy_pdcp_data_req
(
Protocol__FlexsplitMessage
*
msg
)
{
int
proto_agent_destroy_pdcp_data_req
(
Protocol__FlexsplitMessage
*
msg
)
{
...
@@ -377,24 +379,17 @@ int proto_agent_get_ack_result(mod_id_t mod_id, const void *params, Protocol__Fl
...
@@ -377,24 +379,17 @@ int proto_agent_get_ack_result(mod_id_t mod_id, const void *params, Protocol__Fl
}
}
int
proto_agent_pdcp_data_req_
ack
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
int
proto_agent_pdcp_data_req_
process
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
{
Protocol__FspHeader
*
header
;
xid_t
xid
;
rlc_op_status_t
result
=
0
;
rlc_op_status_t
result
=
0
;
LOG_D
(
PROTO_AGENT
,
"creating the data_req_ack message
\n
"
);
Protocol__FlexsplitMessage
*
input
=
(
Protocol__FlexsplitMessage
*
)
params
;
Protocol__FlexsplitMessage
*
input
=
(
Protocol__FlexsplitMessage
*
)
params
;
Protocol__FspRlcDataReq
*
data_req
=
input
->
data_req_msg
;
Protocol__FspRlcDataReq
*
data_req
=
input
->
data_req_msg
;
xid
=
data_req
->
header
->
xid
;
Protocol__FspCtxt
*
ctxt
=
NULL
;
Protocol__FspCtxt
*
ctxt
=
NULL
;
Protocol__FspRlcData
*
rlc_data
=
NULL
;
Protocol__FspRlcData
*
rlc_data
=
NULL
;
rlc_data
=
data_req
->
pdcp_data
;
rlc_data
=
data_req
->
pdcp_data
;
ctxt
=
rlc_data
->
fsp_ctxt
;
ctxt
=
rlc_data
->
fsp_ctxt
;
protocol_ctxt_t
*
ctxt_pP
;
protocol_ctxt_t
*
ctxt_pP
;
...
@@ -402,14 +397,13 @@ int proto_agent_pdcp_data_req_ack(mod_id_t mod_id, const void *params, Protocol_
...
@@ -402,14 +397,13 @@ int proto_agent_pdcp_data_req_ack(mod_id_t mod_id, const void *params, Protocol_
rb_id_t
rb_idP
=
0
;
rb_id_t
rb_idP
=
0
;
mui_t
muiP
=
0
;
mui_t
muiP
=
0
;
confirm_t
confirmP
=
0
;
confirm_t
confirmP
=
0
;
sdu_size_t
pdcp_pdu_size
=
0
;
MBMS_flag_t
flag_MBMS
=
0
;
MBMS_flag_t
flag_MBMS
=
0
;
sdu_size_t
pdcp_pdu_size
=
0
;
mem_block_t
*
pdcp_pdu_p
=
NULL
;
mem_block_t
*
pdcp_pdu_p
=
NULL
;
// Create a new protocol context for handling the packet
// Create a new protocol context for handling the packet
ctxt_pP
=
malloc
(
sizeof
(
protocol_ctxt_t
));
ctxt_pP
=
malloc
(
sizeof
(
protocol_ctxt_t
));
if
(
!
ctxt_pP
)
goto
error
;
ctxt_pP
->
module_id
=
ctxt
->
fsp_mod_id
;
ctxt_pP
->
module_id
=
ctxt
->
fsp_mod_id
;
ctxt_pP
->
enb_flag
=
ctxt
->
fsp_enb_flag
;
ctxt_pP
->
enb_flag
=
ctxt
->
fsp_enb_flag
;
ctxt_pP
->
instance
=
ctxt
->
fsp_instance
;
ctxt_pP
->
instance
=
ctxt
->
fsp_instance
;
...
@@ -425,10 +419,9 @@ int proto_agent_pdcp_data_req_ack(mod_id_t mod_id, const void *params, Protocol_
...
@@ -425,10 +419,9 @@ int proto_agent_pdcp_data_req_ack(mod_id_t mod_id, const void *params, Protocol_
confirmP
=
rlc_data
->
fsp_confirm
;
confirmP
=
rlc_data
->
fsp_confirm
;
pdcp_pdu_size
=
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
len
;
pdcp_pdu_size
=
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
len
;
pdcp_pdu_p
=
get_free_mem_block
(
pdcp_pdu_size
,
__func__
);
pdcp_pdu_p
=
get_free_mem_block
(
pdcp_pdu_size
,
__func__
);
if
(
!
pdcp_pdu_p
)
goto
error
;
memcpy
(
pdcp_pdu_p
->
data
,
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
data
,
pdcp_pdu_size
);
memcpy
(
pdcp_pdu_p
->
data
,
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
data
,
pdcp_pdu_size
);
result
=
rlc_data_req
((
const
protocol_ctxt_t
*
)
ctxt_pP
result
=
rlc_data_req
((
const
protocol_ctxt_t
*
)
ctxt_pP
,(
const
srb_flag_t
)
srb_flagP
,(
const
srb_flag_t
)
srb_flagP
,(
const
MBMS_flag_t
)
flag_MBMS
,(
const
MBMS_flag_t
)
flag_MBMS
...
@@ -443,59 +436,20 @@ int proto_agent_pdcp_data_req_ack(mod_id_t mod_id, const void *params, Protocol_
...
@@ -443,59 +436,20 @@ int proto_agent_pdcp_data_req_ack(mod_id_t mod_id, const void *params, Protocol_
#endif
#endif
);
);
Protocol__FspRlcDataReqAck
*
ack
=
NULL
;
return
result
;
if
(
fsp_create_header
(
xid
,
PROTOCOL__FSP_TYPE__FSPT_RLC_DATA_REQ_ACK
,
&
header
)
!=
0
)
goto
error
;
ack
=
malloc
(
sizeof
(
Protocol__FspRlcDataReqAck
));
protocol__fsp_rlc_data_req_ack__init
(
ack
);
ack
->
header
=
header
;
ack
->
result
=
result
;
ack
->
has_result
=
1
;
*
msg
=
malloc
(
sizeof
(
Protocol__FlexsplitMessage
));
if
(
*
msg
==
NULL
)
goto
error
;
protocol__flexsplit_message__init
(
*
msg
);
(
*
msg
)
->
msg_case
=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_REQ_ACK
;
(
*
msg
)
->
msg_dir
=
PROTOCOL__FLEXSPLIT_DIRECTION__SUCCESSFUL_OUTCOME
;
(
*
msg
)
->
has_msg_dir
=
1
;
(
*
msg
)
->
data_req_ack
=
ack
;
return
0
;
error:
error:
if
(
pdcp_pdu_p
!=
NULL
)
if
(
ctxt_pP
)
free
(
ctxt_pP
);
if
(
pdcp_pdu_p
)
free_mem_block
(
pdcp_pdu_p
,
__func__
);
free_mem_block
(
pdcp_pdu_p
,
__func__
);
if
(
header
!=
NULL
)
free
(
header
);
if
(
ack
!=
NULL
)
free
(
ack
);
if
(
*
msg
!=
NULL
)
free
(
*
msg
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
return
-
1
;
}
}
int
proto_agent_destroy_pdcp_data_req_ack
(
Protocol__FlexsplitMessage
*
msg
)
{
int
proto_agent_destroy_pdcp_data_ind
(
Protocol__FlexsplitMessage
*
msg
)
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_REQ_ACK
)
{
goto
error
;
free
(
msg
->
data_req_ack
->
header
);
free
(
msg
->
data_req_ack
);
free
(
msg
);
return
0
;
error:
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
}
int
proto_agent_destroy_pdcp_data_ind
(
Protocol__FlexsplitMessage
*
msg
)
{
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_IND_MSG
)
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_IND_MSG
)
goto
error
;
goto
error
;
...
@@ -547,7 +501,7 @@ int proto_agent_pdcp_data_ind(mod_id_t mod_id, const void *params, Protocol__Fle
...
@@ -547,7 +501,7 @@ int proto_agent_pdcp_data_ind(mod_id_t mod_id, const void *params, Protocol__Fle
pdu
->
fsp_pdu_data
.
data
=
malloc
(
args
->
sdu_size
);
pdu
->
fsp_pdu_data
.
data
=
malloc
(
args
->
sdu_size
);
pdu
->
fsp_pdu_data
.
len
=
args
->
sdu_size
;
pdu
->
fsp_pdu_data
.
len
=
args
->
sdu_size
;
memcpy
(
pdu
->
fsp_pdu_data
.
data
,
args
->
sdu_p
,
args
->
sdu_size
);
memcpy
(
pdu
->
fsp_pdu_data
.
data
,
args
->
sdu_p
->
data
,
args
->
sdu_size
);
pdu
->
has_fsp_pdu_data
=
1
;
pdu
->
has_fsp_pdu_data
=
1
;
// Copy data to the ctxt structure
// Copy data to the ctxt structure
...
@@ -616,30 +570,19 @@ int proto_agent_pdcp_data_ind(mod_id_t mod_id, const void *params, Protocol__Fle
...
@@ -616,30 +570,19 @@ int proto_agent_pdcp_data_ind(mod_id_t mod_id, const void *params, Protocol__Fle
free
(
*
msg
);
free
(
*
msg
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
return
-
1
;
}
}
int
proto_agent_pdcp_data_ind_
ack
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
int
proto_agent_pdcp_data_ind_
process
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
{
Protocol__FspHeader
*
header
;
boolean_t
result
=
0
;
Protocol__FspPdcpDataIndAck
*
ack
=
NULL
;
xid_t
xid
;
rlc_op_status_t
result
=
0
;
//printf("PROTO_AGENT: creating the data_ind_ack message\n");
Protocol__FlexsplitMessage
*
input
=
(
Protocol__FlexsplitMessage
*
)
params
;
Protocol__FlexsplitMessage
*
input
=
(
Protocol__FlexsplitMessage
*
)
params
;
Protocol__FspPdcpDataInd
*
data_ind
=
input
->
data_ind_msg
;
Protocol__FspPdcpDataInd
*
data_ind
=
input
->
data_ind_msg
;
xid
=
data_ind
->
header
->
xid
;
Protocol__FspCtxt
*
ctxt
=
NULL
;
Protocol__FspCtxt
*
ctxt
=
NULL
;
Protocol__FspRlcData
*
rlc_data
=
NULL
;
Protocol__FspRlcData
*
rlc_data
=
NULL
;
rlc_data
=
data_ind
->
rlc_data
;
rlc_data
=
data_ind
->
rlc_data
;
ctxt
=
rlc_data
->
fsp_ctxt
;
ctxt
=
rlc_data
->
fsp_ctxt
;
protocol_ctxt_t
*
ctxt_pP
;
protocol_ctxt_t
*
ctxt_pP
;
...
@@ -649,13 +592,10 @@ int proto_agent_pdcp_data_ind_ack(mod_id_t mod_id, const void *params, Protocol_
...
@@ -649,13 +592,10 @@ int proto_agent_pdcp_data_ind_ack(mod_id_t mod_id, const void *params, Protocol_
MBMS_flag_t
flag_MBMS
=
0
;
MBMS_flag_t
flag_MBMS
=
0
;
mem_block_t
*
pdcp_pdu_p
=
NULL
;
mem_block_t
*
pdcp_pdu_p
=
NULL
;
// Create a new protocol context for handling the packet
// Create a new protocol context for handling the packet
ctxt_pP
=
malloc
(
sizeof
(
protocol_ctxt_t
));
ctxt_pP
=
malloc
(
sizeof
(
protocol_ctxt_t
));
//FIXME:
if
(
!
ctxt_pP
)
goto
error
;
//ctxt_pP->module_id = ctxt->fsp_mod_id;
ctxt_pP
->
module_id
=
ctxt
->
fsp_mod_id
;
ctxt_pP
->
module_id
=
0
;
ctxt_pP
->
enb_flag
=
ctxt
->
fsp_enb_flag
;
ctxt_pP
->
enb_flag
=
ctxt
->
fsp_enb_flag
;
ctxt_pP
->
instance
=
ctxt
->
fsp_instance
;
ctxt_pP
->
instance
=
ctxt
->
fsp_instance
;
ctxt_pP
->
rnti
=
ctxt
->
fsp_rnti
;
ctxt_pP
->
rnti
=
ctxt
->
fsp_rnti
;
...
@@ -668,70 +608,33 @@ int proto_agent_pdcp_data_ind_ack(mod_id_t mod_id, const void *params, Protocol_
...
@@ -668,70 +608,33 @@ int proto_agent_pdcp_data_ind_ack(mod_id_t mod_id, const void *params, Protocol_
rb_idP
=
rlc_data
->
fsp_rb_id
;
rb_idP
=
rlc_data
->
fsp_rb_id
;
pdcp_pdu_size
=
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
len
;
pdcp_pdu_size
=
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
len
;
pdcp_pdu_p
=
get_free_mem_block
(
pdcp_pdu_size
,
__func__
);
pdcp_pdu_p
=
get_free_mem_block
(
pdcp_pdu_size
,
__func__
);
if
(
!
pdcp_pdu_p
)
goto
error
;
memcpy
(
pdcp_pdu_p
->
data
,
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
data
,
pdcp_pdu_size
);
memcpy
(
pdcp_pdu_p
->
data
,
rlc_data
->
fsp_pdu
->
fsp_pdu_data
.
data
,
pdcp_pdu_size
);
// if (xid == 1)
// if (xid == 1)
// pdcp_data_ind_wifi((const protocol_ctxt_t*) ctxt_pP, (const srb_flag_t) srb_flagP, (const MBMS_flag_t) flag_MBMS, (const rb_id_t) rb_idP, pdcp_pdu_size, pdcp_pdu_p);
// pdcp_data_ind_wifi((const protocol_ctxt_t*) ctxt_pP, (const srb_flag_t) srb_flagP, (const MBMS_flag_t) flag_MBMS, (const rb_id_t) rb_idP, pdcp_pdu_size, pdcp_pdu_p);
// else if (xid == 0) // FIXME: USE a preprocessed definition
// else if (xid == 0) // FIXME: USE a preprocessed definition
pdcp_data_ind
((
const
protocol_ctxt_t
*
)
ctxt_pP
,
(
const
srb_flag_t
)
srb_flagP
,
(
const
MBMS_flag_t
)
flag_MBMS
,
(
const
rb_id_t
)
rb_idP
,
pdcp_pdu_size
,
pdcp_pdu_p
);
result
=
pdcp_data_ind
(
ctxt_pP
,
srb_flagP
,
if
(
fsp_create_header
(
xid
,
PROTOCOL__FSP_TYPE__FSPT_PDCP_DATA_IND_ACK
,
&
header
)
!=
0
)
flag_MBMS
,
goto
error
;
rb_idP
,
pdcp_pdu_size
,
ack
=
malloc
(
sizeof
(
Protocol__FspPdcpDataIndAck
));
pdcp_pdu_p
);
protocol__fsp_pdcp_data_ind_ack__init
(
ack
);
ack
->
header
=
header
;
ack
->
result
=
result
;
ack
->
has_result
=
1
;
*
msg
=
malloc
(
sizeof
(
Protocol__FlexsplitMessage
));
if
(
*
msg
==
NULL
)
goto
error
;
protocol__flexsplit_message__init
(
*
msg
);
return
result
;
(
*
msg
)
->
msg_case
=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_IND_ACK
;
(
*
msg
)
->
msg_dir
=
PROTOCOL__FLEXSPLIT_DIRECTION__SUCCESSFUL_OUTCOME
;
(
*
msg
)
->
has_msg_dir
=
1
;
// FIXME: the following was (*msg)->data_req_ack = ack;
// but this throws compiler warning. Probably we want the following instead
(
*
msg
)
->
data_ind_ack
=
ack
;
return
0
;
error:
error:
if
(
header
!=
NULL
)
if
(
ctxt_pP
)
free
(
header
);
free
(
ctxt_pP
);
if
(
ack
!=
NULL
)
if
(
pdcp_pdu_p
)
free
(
ack
);
if
(
*
msg
!=
NULL
)
free
(
*
msg
);
if
(
pdcp_pdu_p
!=
NULL
)
free_mem_block
(
pdcp_pdu_p
,
__func__
);
free_mem_block
(
pdcp_pdu_p
,
__func__
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
return
-
1
;
}
}
int
proto_agent_hello
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
int
proto_agent_destroy_pdcp_data_ind_ack
(
Protocol__FlexsplitMessage
*
msg
)
{
{
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_IND_ACK
)
goto
error
;
free
(
msg
->
data_req_ack
->
header
);
free
(
msg
->
data_req_ack
);
free
(
msg
);
return
0
;
error:
LOG_E
(
MAC
,
"%s: an error occured
\n
"
,
__FUNCTION__
);
return
-
1
;
}
int
proto_agent_hello
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
Protocol__FspHeader
*
header
;
Protocol__FspHeader
*
header
;
Protocol__FspHello
*
hello_msg
=
NULL
;
Protocol__FspHello
*
hello_msg
=
NULL
;
...
@@ -770,8 +673,8 @@ int proto_agent_hello(mod_id_t mod_id, const void *params, Protocol__FlexsplitMe
...
@@ -770,8 +673,8 @@ int proto_agent_hello(mod_id_t mod_id, const void *params, Protocol__FlexsplitMe
}
}
int
proto_agent_destroy_hello
(
Protocol__FlexsplitMessage
*
msg
)
{
int
proto_agent_destroy_hello
(
Protocol__FlexsplitMessage
*
msg
)
{
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_HELLO_MSG
)
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_HELLO_MSG
)
goto
error
;
goto
error
;
...
@@ -785,7 +688,8 @@ int proto_agent_destroy_hello(Protocol__FlexsplitMessage *msg) {
...
@@ -785,7 +688,8 @@ int proto_agent_destroy_hello(Protocol__FlexsplitMessage *msg) {
return
-
1
;
return
-
1
;
}
}
int
proto_agent_echo_request
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
int
proto_agent_echo_request
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
Protocol__FspHeader
*
header
;
Protocol__FspHeader
*
header
;
Protocol__FspEchoRequest
*
echo_request_msg
=
NULL
;
Protocol__FspEchoRequest
*
echo_request_msg
=
NULL
;
...
@@ -823,7 +727,8 @@ int proto_agent_echo_request(mod_id_t mod_id, const void* params, Protocol__Flex
...
@@ -823,7 +727,8 @@ int proto_agent_echo_request(mod_id_t mod_id, const void* params, Protocol__Flex
return
-
1
;
return
-
1
;
}
}
int
proto_agent_destroy_echo_request
(
Protocol__FlexsplitMessage
*
msg
)
{
int
proto_agent_destroy_echo_request
(
Protocol__FlexsplitMessage
*
msg
)
{
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_ECHO_REQUEST_MSG
)
if
(
msg
->
msg_case
!=
PROTOCOL__FLEXSPLIT_MESSAGE__MSG_ECHO_REQUEST_MSG
)
goto
error
;
goto
error
;
...
@@ -837,16 +742,14 @@ int proto_agent_destroy_echo_request(Protocol__FlexsplitMessage *msg) {
...
@@ -837,16 +742,14 @@ int proto_agent_destroy_echo_request(Protocol__FlexsplitMessage *msg) {
return
-
1
;
return
-
1
;
}
}
int
proto_agent_echo_reply
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
int
proto_agent_echo_reply
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
)
{
xid_t
xid
;
xid_t
xid
;
Protocol__FlexsplitMessage
*
input
=
(
Protocol__FlexsplitMessage
*
)
params
;
Protocol__FlexsplitMessage
*
input
=
(
Protocol__FlexsplitMessage
*
)
params
;
Protocol__FspEchoRequest
*
echo_req
=
input
->
echo_request_msg
;
Protocol__FspEchoRequest
*
echo_req
=
input
->
echo_request_msg
;
Protocol__FspEchoReply
*
echo_reply_msg
=
NULL
;
Protocol__FspEchoReply
*
echo_reply_msg
=
NULL
;
xid
=
(
echo_req
->
header
)
->
xid
;
xid
=
(
echo_req
->
header
)
->
xid
;
LOG_D
(
PROTO_AGENT
,
"creating the echo reply message
\n
"
);
LOG_D
(
PROTO_AGENT
,
"creating the echo reply message
\n
"
);
Protocol__FspHeader
*
header
;
Protocol__FspHeader
*
header
;
if
(
fsp_create_header
(
xid
,
PROTOCOL__FSP_TYPE__FSPT_ECHO_REPLY
,
&
header
)
!=
0
)
if
(
fsp_create_header
(
xid
,
PROTOCOL__FSP_TYPE__FSPT_ECHO_REPLY
,
&
header
)
!=
0
)
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_common.h
View file @
56a71f38
...
@@ -95,13 +95,11 @@ int proto_agent_echo_reply(mod_id_t mod_id, const void *params, Protocol__Flexsp
...
@@ -95,13 +95,11 @@ int proto_agent_echo_reply(mod_id_t mod_id, const void *params, Protocol__Flexsp
int
proto_agent_destroy_echo_reply
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_destroy_echo_reply
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_pdcp_data_req
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_pdcp_data_req
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_pdcp_data_req_
ack
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_pdcp_data_req_
process
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_destroy_pdcp_data_req
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_destroy_pdcp_data_req
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_destroy_pdcp_data_req_ack
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_pdcp_data_ind
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_pdcp_data_ind
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_destroy_pdcp_data_ind
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_destroy_pdcp_data_ind
(
Protocol__FlexsplitMessage
*
msg
);
int
proto_agent_pdcp_data_ind_ack
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_pdcp_data_ind_process
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
proto_agent_destroy_pdcp_data_ind_ack
(
Protocol__FlexsplitMessage
*
msg
);
int
just_print
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
int
just_print
(
mod_id_t
mod_id
,
const
void
*
params
,
Protocol__FlexsplitMessage
**
msg
);
...
@@ -119,7 +117,7 @@ typedef struct _data_req_args data_req_args;
...
@@ -119,7 +117,7 @@ typedef struct _data_req_args data_req_args;
typedef
struct
_dl_data_args
dl_data_args
;
typedef
struct
_dl_data_args
dl_data_args
;
struct
_data_req_args
{
struct
_data_req_args
{
protocol_ctxt_t
*
ctxt
;
const
protocol_ctxt_t
*
ctxt
;
srb_flag_t
srb_flag
;
srb_flag_t
srb_flag
;
MBMS_flag_t
MBMS_flag
;
MBMS_flag_t
MBMS_flag
;
rb_id_t
rb_id
;
rb_id_t
rb_id
;
...
...
openair2/LAYER2/PROTO_AGENT/proto_agent_handler.c
View file @
56a71f38
...
@@ -40,13 +40,13 @@
...
@@ -40,13 +40,13 @@
#include "assertions.h"
#include "assertions.h"
proto_agent_message_decoded_callback
proto_agent_messages_callback
[][
3
]
=
{
proto_agent_message_decoded_callback
proto_agent_messages_callback
[][
3
]
=
{
{
proto_agent_hello
,
0
,
0
},
{
proto_agent_hello
,
0
,
0
},
/* agent hello */
{
proto_agent_echo_reply
,
0
,
0
},
{
proto_agent_echo_reply
,
0
,
0
},
/* echo */
{
0
,
just_print
,
0
},
{
0
,
just_print
,
0
},
/* just print */
{
proto_agent_pdcp_data_req_
ack
,
0
,
0
},
{
proto_agent_pdcp_data_req_
process
,
0
,
0
},
/* PDCP data REQ */
{
0
,
proto_agent_get_ack_result
,
0
},
{
0
,
proto_agent_get_ack_result
,
0
},
/* get ACK result */
{
proto_agent_pdcp_data_ind_
ack
,
0
,
0
},
{
proto_agent_pdcp_data_ind_
process
,
0
,
0
},
/* PDCP data IND */
{
0
,
just_print
,
0
},
{
0
,
just_print
,
0
},
/* just print */
};
};
proto_agent_message_destruction_callback
proto_message_destruction_callback
[]
=
{
proto_agent_message_destruction_callback
proto_message_destruction_callback
[]
=
{
...
@@ -54,10 +54,9 @@ proto_agent_message_destruction_callback proto_message_destruction_callback[] =
...
@@ -54,10 +54,9 @@ proto_agent_message_destruction_callback proto_message_destruction_callback[] =
proto_agent_destroy_echo_request
,
proto_agent_destroy_echo_request
,
proto_agent_destroy_echo_reply
,
proto_agent_destroy_echo_reply
,
proto_agent_destroy_pdcp_data_req
,
proto_agent_destroy_pdcp_data_req
,
proto_agent_destroy_pdcp_data_req_ack
,
0
,
proto_agent_destroy_pdcp_data_ind
,
proto_agent_destroy_pdcp_data_ind
,
proto_agent_destroy_pdcp_data_ind_ack
,
0
,
};
};
//static const char *proto_agent_direction2String[] = {
//static const char *proto_agent_direction2String[] = {
...
@@ -129,8 +128,7 @@ uint8_t *proto_agent_pack_message(Protocol__FlexsplitMessage *msg, int *size)
...
@@ -129,8 +128,7 @@ uint8_t *proto_agent_pack_message(Protocol__FlexsplitMessage *msg, int *size)
goto
error
;
goto
error
;
}
}
//TODO call proper destroy function
if
(
proto_message_destruction_callback
[
msg
->
msg_case
-
1
])
err_code
=
((
*
proto_message_destruction_callback
[
msg
->
msg_case
-
1
])(
msg
));
err_code
=
((
*
proto_message_destruction_callback
[
msg
->
msg_case
-
1
])(
msg
));
DevAssert
(
buffer
!=
NULL
);
DevAssert
(
buffer
!=
NULL
);
...
...
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