/******************************************************************************
*
-* Copyright (c) 2019 Intel.
+* Copyright (c) 2020 Intel.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "common.hpp"
#include "xran_common.h"
+#include "xran_up_api.h"
#include "xran_fh_o_du.h"
#include "ethernet.h"
#include <stdint.h>
-const std::string module_name = "u-plane";
-
+const std::string module_name = "U-Plane";
+
+ /*union xran_test {
+ struct {
+ struct xran_cp_radioapp_common_header cmnhdr;
+ struct xran_radioapp_udComp_header udComp;
+ uint8_t reserved;
+ }field;
+ struct {
+ uint32_t data_one;
+ uint32_t data_two;
+ }all_data;
+ };*/
+ void fucntional_dl(struct rte_mbuf *test_buffer, char * iq_offset)
+ {
+ enum xran_pkt_dir direction = XRAN_DIR_DL;
+ uint16_t section_id = 7;
+ uint16_t num_sections = 1;
+ enum xran_input_byte_order iq_buf_byte_order = XRAN_CPU_LE_BYTE_ORDER;
+ uint8_t frame_id = 99;
+ uint8_t subframe_id = 9;
+ uint8_t slot_id = 10;
+ uint8_t symbol_no = 7;
+ int prb_start = 0;
+ int prb_num = 66;
+ uint8_t CC_ID = 0;
+ uint8_t RU_Port_ID = 0;
+ uint8_t seq_id =0;
+ uint32_t do_copy = 0;
+ uint8_t compMeth = 0;
+ enum xran_comp_hdr_type staticEn = XRAN_COMP_HDR_TYPE_DYNAMIC;
+ uint8_t iqWidth = 16;
+
+
+ prepare_symbol_ex(direction,
+ section_id,
+ test_buffer,
+ (uint8_t *)iq_offset,
+ compMeth,
+ iqWidth,
+ iq_buf_byte_order,
+ frame_id,
+ subframe_id,
+ slot_id,
+ symbol_no,
+ prb_start,
+ prb_num,
+ CC_ID,
+ RU_Port_ID,
+ seq_id,
+ do_copy,
+ staticEn,
+ num_sections,
+ 0);
+
+ /*union xran_cp_radioapp_section_ext11 *ext11 = NULL;
+ struct xran_sectionext11_info *params = NULL;
+ int i;
+ ext11 = (union xran_cp_radioapp_section_ext11 *)(iq_offset);
+ params = (struct xran_sectionext11_info *)(iq_offset+100);
+
+ params->RAD = 1;
+ params->disableBFWs = 1;
+ params->numBundPrb = 1;
+ params->bfwCompMeth = 2;
+
+ for(i = 0; i< 10000; i++)
+ {
+ ext11->data_field.data_field1 = (XRAN_CP_SECTIONEXTCMD_11 << 24) | (params->RAD << 7) | (params->disableBFWs << 8);
+ //ext11->data_field.data_field1 = (XRAN_CP_SECTIONEXTCMD_11 << 24)'
+ //ext11->all_bits.RAD = params->RAD;
+ //ext11->all_bits.disableBFWs = params->disableBFWs;
+ ext11->data_field.data_field2 = (params->bfwCompMeth << 4) | params->numBundPrb;
+ //ext11->all_bits.numBundPrb = params->numBundPrb;
+ //ext11->all_bits.bfwCompMeth = params->bfwCompMeth;
+
+ }*/
+ //printf("ext11->data_field.data_field1 is %d\n", ext11->data_field.data_field1);
+ //ASSERT_EQ(prep_bytes, 3168);
+ }
class U_planePerf : public KernelTests
{
struct rte_mbuf *test_buffer;
char * iq_offset;
- struct rte_mempool *test_eth_mbuf_pool;
void SetUp() override
{
/* Parameters stored in the functional section will be used. GTest will call
TEST_P (including SetUp and TearDown) for each case in the section. */
init_test("u_plane_performace");
- test_eth_mbuf_pool = rte_pktmbuf_pool_create("mempool", NUM_MBUFS,
- MBUF_CACHE, 0, MBUF_POOL_ELEMENT, rte_socket_id());
+ test_buffer = (struct rte_mbuf*)rte_pktmbuf_alloc(_eth_mbuf_pool);
/* buffer size defined as the maximum size of all inputs/outputs in BYTE */
- const int buffer_size = 9600;
- test_buffer = (struct rte_mbuf*)rte_pktmbuf_alloc(test_eth_mbuf_pool);
-
+ if(test_buffer == NULL) {
+ std::cout << __func__ << ":" << __LINE__ << " Failed to allocatte a packet buffer!" << std::endl;
+ return;
+ }
iq_offset = rte_pktmbuf_mtod(test_buffer, char * );
- iq_offset = iq_offset + sizeof(struct ether_hdr) +
+ iq_offset = iq_offset + sizeof(struct rte_ether_hdr) +
sizeof (struct xran_ecpri_hdr) +
sizeof (struct radio_app_common_hdr) +
sizeof(struct data_section_hdr);
rte_pktmbuf_free(test_buffer);
}
- void fucntional_dl(F function, int32_t* request, int32_t* response)
- {
- enum xran_pkt_dir direction = XRAN_DIR_DL;
- uint16_t section_id = 0;
- enum xran_input_byte_order iq_buf_byte_order = XRAN_CPU_LE_BYTE_ORDER;
- uint8_t frame_id = 0;
- uint8_t subframe_id = 0;
- uint8_t slot_id = 0;
- uint8_t symbol_no = 0;
- int prb_start = 0;
- int prb_num = 66;
- uint8_t CC_ID = 0;
- uint8_t RU_Port_ID = 0;
- uint8_t seq_id =0;
- uint32_t do_copy = 0;
- int32_t prep_bytes;
-
- prep_bytes = prepare_symbol_ex(direction,
- section_id,
- test_buffer,
- (struct rb_map *)iq_offset,
- iq_buf_byte_order,
- frame_id,
- subframe_id,
- slot_id,
- symbol_no,
- prb_start,
- prb_num,
- CC_ID,
- RU_Port_ID,
- seq_id,
- do_copy);
-
- //ASSERT_EQ(prep_bytes, 3168);
- }
};
-TEST_P(U_planePerf, Test_DL)
+TEST_P(U_planePerf, Perf)
{
- performance("C", module_name, fucntional_dl, &request, &response);
+ performance("C", module_name, &fucntional_dl, test_buffer, iq_offset);
}
INSTANTIATE_TEST_CASE_P(UnitTest, U_planePerf,