Add GTPU tunnel data request at PDCP to deliver Uplink traffic over S1-U
This commit is contained in:
@@ -394,11 +394,48 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
|
|||||||
{
|
{
|
||||||
extern int nas_sock_fd[];
|
extern int nas_sock_fd[];
|
||||||
int len;
|
int len;
|
||||||
|
nr_pdcp_ue_t *ue = _ue;
|
||||||
|
MessageDef *message_p;
|
||||||
|
uint8_t *gtpu_buffer_p;
|
||||||
|
int rb_id;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if(IS_SOFTMODEM_NOS1){
|
||||||
|
len = write(nas_sock_fd[0], buf, size);
|
||||||
|
if (len != size) {
|
||||||
|
LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
if (entity == ue->drb[i]) {
|
||||||
|
rb_id = i+1;
|
||||||
|
goto rb_found;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_E(PDCP, "%s:%d:%s: fatal, no RB found for ue %d\n",
|
||||||
|
__FILE__, __LINE__, __FUNCTION__, ue->rnti);
|
||||||
|
exit(1);
|
||||||
|
|
||||||
|
rb_found:
|
||||||
|
gtpu_buffer_p = itti_malloc(TASK_PDCP_ENB, TASK_GTPV1_U,
|
||||||
|
size + GTPU_HEADER_OVERHEAD_MAX);
|
||||||
|
AssertFatal(gtpu_buffer_p != NULL, "OUT OF MEMORY");
|
||||||
|
memcpy(>pu_buffer_p[GTPU_HEADER_OVERHEAD_MAX], buf, size);
|
||||||
|
message_p = itti_alloc_new_message(TASK_PDCP_ENB, GTPV1U_ENB_TUNNEL_DATA_REQ);
|
||||||
|
AssertFatal(message_p != NULL, "OUT OF MEMORY");
|
||||||
|
GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).buffer = gtpu_buffer_p;
|
||||||
|
GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).length = size;
|
||||||
|
GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).offset = GTPU_HEADER_OVERHEAD_MAX;
|
||||||
|
GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).rnti = ue->rnti;
|
||||||
|
GTPV1U_ENB_TUNNEL_DATA_REQ(message_p).rab_id = rb_id + 4;
|
||||||
|
printf("!!!!!!! deliver_sdu_drb (drb %d) sending message to gtp size %d: ", rb_id, size);
|
||||||
|
//for (i = 0; i < size; i++) printf(" %2.2x", (unsigned char)buf[i]);
|
||||||
|
printf("\n");
|
||||||
|
itti_send_msg_to_task(TASK_GTPV1_U, INSTANCE_DEFAULT, message_p);
|
||||||
|
|
||||||
len = write(nas_sock_fd[0], buf, size);
|
|
||||||
if (len != size) {
|
|
||||||
LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__);
|
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user