From 19922715895572071400ebd55ec5b2760941e90a Mon Sep 17 00:00:00 2001 From: Sandeep Kumar <ee13b1025@iith.ac.in> Date: Fri, 24 Jun 2016 16:35:42 +0200 Subject: [PATCH] rcc recv and send work (not sync with rru yet) --- openair1/PHY/LTE_TRANSPORT/if4_tools.c | 15 ++++----- targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c | 33 +++++++------------ 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index 10b6ee66b7..4756559ac3 100644 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -193,22 +193,21 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type, } db_halflength = db_fulllength>>1; - int64_t *ret_type=(int64_t*)malloc(sizeof(int64_t)); void *rx_buffer=NULL; + IF4_header_t *packet_header=NULL; int16_t *data_block=NULL; - - + // Read packet(s) from the fronthaul if (eNB->ifdevice.trx_read_func(&eNB->ifdevice, - ret_type, + (int64_t*) packet_type, &rx_buffer, db_fulllength, 0) < 0) { perror("ETHERNET read"); } - *packet_type = (uint16_t) *ret_type; - data_block = (int16_t*) (rx_buffer+sizeof_IF4_header_t); + packet_header = (IF4_header_t*) (rx_buffer+MAC_HEADER_SIZE_BYTES); + data_block = (int16_t*) (rx_buffer+MAC_HEADER_SIZE_BYTES+sizeof_IF4_header_t); if (*packet_type == IF4_PDLFFT) { // Calculate from received packet @@ -225,7 +224,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type, } // Find and return symbol_number - *symbol_number = ((((IF4_header_t*)(rx_buffer))->frame_status)>>26)&0x000f; + *symbol_number = ((packet_header->frame_status)>>26)&0x000f; } else if (*packet_type == IF4_PULFFT) { // Calculate from received packet @@ -242,7 +241,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t *packet_type, } // Find and return symbol_number - *symbol_number = ((((IF4_header_t*)(rx_buffer))->frame_status)>>26)&0x000f; + *symbol_number = ((packet_header->frame_status)>>26)&0x000f; } else if (*packet_type == IF4_PRACH) { // FIX: hard coded prach samples length diff --git a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c index f6e7db4c6e..780261d12a 100644 --- a/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c +++ b/targets/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c @@ -312,13 +312,12 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp, ssize_t packet_size = MAC_HEADER_SIZE_BYTES + sizeof_IF4_header_t; void *test_buffer = (void*)malloc(packet_size); - void *rx_buffer=NULL; IF4_header_t *test_header = (IF4_header_t*)(test_buffer + MAC_HEADER_SIZE_BYTES); bytes_received = recv(eth->sockfd[Mod_id], test_buffer, packet_size, - 0); + MSG_PEEK); if (bytes_received ==-1) { eth->num_rx_errors++; perror("ETHERNET READ: "); @@ -328,29 +327,22 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp, *timestamp = test_header->sub_type; if (test_header->sub_type == IF4_PDLFFT) { - buff[0] = (void*)malloc(RAW_IF4_PDLFFT_SIZE_BYTES(nblocks) - MAC_HEADER_SIZE_BYTES); - packet_size = RAW_IF4_PDLFFT_SIZE_BYTES(nblocks) - packet_size; - + packet_size = RAW_IF4_PDLFFT_SIZE_BYTES(nblocks); } else if (test_header->sub_type == IF4_PULFFT) { - buff[0] = (void*)malloc(RAW_IF4_PULFFT_SIZE_BYTES(nblocks) - MAC_HEADER_SIZE_BYTES); - packet_size = RAW_IF4_PULFFT_SIZE_BYTES(nblocks) - packet_size; - + packet_size = RAW_IF4_PULFFT_SIZE_BYTES(nblocks); } else { - buff[0] = (void*)malloc(RAW_IF4_PRACH_SIZE_BYTES - MAC_HEADER_SIZE_BYTES); - packet_size = RAW_IF4_PRACH_SIZE_BYTES - packet_size; - printf(" Came for prach\n"); + packet_size = RAW_IF4_PRACH_SIZE_BYTES; } - - memcpy(buff[0], test_header, sizeof_IF4_header_t); - rx_buffer = (void*)(buff[0]+sizeof_IF4_header_t); + + buff[0] = (void*)malloc(packet_size); bytes_received = 0; while(bytes_received < packet_size) { - bytes_received += recv(eth->sockfd[Mod_id], - rx_buffer, - packet_size-bytes_received, - 0); + bytes_received = recv(eth->sockfd[Mod_id], + buff[0], + packet_size, + 0); if (bytes_received ==-1) { eth->num_rx_errors++; perror("ETHERNET READ: "); @@ -361,10 +353,9 @@ int trx_eth_read_raw_IF4(openair0_device *device, openair0_timestamp *timestamp, } } - eth->rx_nsamps = nsamps; - + eth->rx_nsamps = nsamps; free(test_buffer); - return (bytes_received-MAC_HEADER_SIZE_BYTES)>>1; + return(bytes_received); } -- GitLab