From 5831721775a41d868b1a4c510d73b12875f4e3c1 Mon Sep 17 00:00:00 2001 From: "lishuang.xie" Date: Mon, 18 Mar 2024 15:23:35 +0800 Subject: [PATCH] update feature#1694# merge dev_ck_v2.1_xls_feature#1694# to dev_ck_v2.1 1. Four-channel support 2. OAM ul change 32 blocks to 16 blocks, so modified the cases 3. Test: 3.1 spu_case0_arm_case0_cpri: Pass 3.2 spu_case14_arm_case20_cpri:Pass 3.3 spu_case20_arm_case20_cpri:Pass 3.4 spu_case24_arm_case24_cpri:Pass 3.5 spu_case34_arm_case5: Pass 3.6 spu_case44_arm_case5: Pass --- app/inc/msg_transfer_layer.h | 162 ++++++++--------- interface/msg_transfer_layer.h | 162 ++++++++--------- test/case0/src/testcase.c | 4 +- test/case20/src/testcase20.c | 4 +- test/case21/src/testcase21.c | 4 +- test/case22/src/testcase22.c | 4 +- test/case23/src/testcase23.c | 4 +- test/case24/src/testcase24.c | 321 +++++++++++++++++++++++++-------- test/case3/src/testcase.c | 4 +- test/case4/src/testcase.c | 4 +- test/case45/src/testcase45.c | 4 +- test/case46/src/testcase46.c | 4 +- test/case48/src/testcase48.c | 4 +- test/case5/src/testcase5.c | 4 +- 14 files changed, 425 insertions(+), 264 deletions(-) diff --git a/app/inc/msg_transfer_layer.h b/app/inc/msg_transfer_layer.h index 72cbac7..43db1d2 100644 --- a/app/inc/msg_transfer_layer.h +++ b/app/inc/msg_transfer_layer.h @@ -1,81 +1,81 @@ -// +FHDR------------------------------------------------------------ -// Copyright (c) 2022 SmartLogic. -// ALL RIGHTS RESERVED -// ----------------------------------------------------------------- -// Filename : msg_transfer_layer.h -// Author : xianfeng.du -// Created On : 2022-06-29 -// Last Modified : -// ----------------------------------------------------------------- -// Description: -// -// -// -FHDR------------------------------------------------------------ - -#ifndef __MSG_TRANSFER_LAYER_H__ -#define __MSG_TRANSFER_LAYER_H__ - -#include "typedef.h" - -#define MAX_INSTANCE_NUM (2) -#define MAX_PORT_NUM (4) - -#define SUCCESS (0) -#define FAILURE (-1) -#define UNINITIALIZED_QUEUE (1) -#define FULLEDED_QUEUE (2) -#define EMPTY_QUEUE (2) -#define OUT_OF_BLOCK_MEMORY (2) - -typedef enum e_transfer_type { - NON_CU_SPLIT, - CU_SPLIT, - OAM, - TRANSFER_TYPE_NUM -} transfer_type_e; - -typedef enum e_cu_flag { - C_PLANE, - U_PLANE -} cu_flag_e; - -typedef union tHandleId { - uint32_t value; - struct { - uint8_t rsv; - uint8_t type_id; - uint8_t inst_id; - uint8_t port_id; - }; -} HandleId_t; - -typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); - -typedef struct t_queue_info { - uint32_t tx_desc_num; - uint32_t rx_desc_num; - uint32_t tx_block_size; - uint32_t rx_block_size; - uint16_t tx_block_num; - uint16_t rx_block_num; - uint16_t directions; - uint16_t rsv; - msg_transfer_callback tx_callback; - msg_transfer_callback rx_callback; -} queue_info_s; - -typedef struct t_transfer_type_info { - queue_info_s queue_cplane_info; - queue_info_s queue_uplane_info; -} transfer_type_info_s; - -int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); -int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag); -int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); -int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); -int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag); -int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); -int32_t msg_transfer_close(int32_t handle_id); - -#endif - +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.h +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_LAYER_H__ +#define __MSG_TRANSFER_LAYER_H__ + +#include "typedef.h" + +#define MAX_INSTANCE_NUM (4) //(2) +#define MAX_PORT_NUM (4) + +#define SUCCESS (0) +#define FAILURE (-1) +#define UNINITIALIZED_QUEUE (1) +#define FULLEDED_QUEUE (2) +#define EMPTY_QUEUE (2) +#define OUT_OF_BLOCK_MEMORY (2) + +typedef enum e_transfer_type { + NON_CU_SPLIT, + CU_SPLIT, + OAM, + TRANSFER_TYPE_NUM +} transfer_type_e; + +typedef enum e_cu_flag { + C_PLANE, + U_PLANE +} cu_flag_e; + +typedef union tHandleId { + uint32_t value; + struct { + uint8_t rsv; + uint8_t type_id; + uint8_t inst_id; + uint8_t port_id; + }; +} HandleId_t; + +typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); + +typedef struct t_queue_info { + uint32_t tx_desc_num; + uint32_t rx_desc_num; + uint32_t tx_block_size; + uint32_t rx_block_size; + uint16_t tx_block_num; + uint16_t rx_block_num; + uint16_t directions; + uint16_t rsv; + msg_transfer_callback tx_callback; + msg_transfer_callback rx_callback; +} queue_info_s; + +typedef struct t_transfer_type_info { + queue_info_s queue_cplane_info; + queue_info_s queue_uplane_info; +} transfer_type_info_s; + +int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); +int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); +int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); +int32_t msg_transfer_close(int32_t handle_id); + +#endif + diff --git a/interface/msg_transfer_layer.h b/interface/msg_transfer_layer.h index 72cbac7..43db1d2 100644 --- a/interface/msg_transfer_layer.h +++ b/interface/msg_transfer_layer.h @@ -1,81 +1,81 @@ -// +FHDR------------------------------------------------------------ -// Copyright (c) 2022 SmartLogic. -// ALL RIGHTS RESERVED -// ----------------------------------------------------------------- -// Filename : msg_transfer_layer.h -// Author : xianfeng.du -// Created On : 2022-06-29 -// Last Modified : -// ----------------------------------------------------------------- -// Description: -// -// -// -FHDR------------------------------------------------------------ - -#ifndef __MSG_TRANSFER_LAYER_H__ -#define __MSG_TRANSFER_LAYER_H__ - -#include "typedef.h" - -#define MAX_INSTANCE_NUM (2) -#define MAX_PORT_NUM (4) - -#define SUCCESS (0) -#define FAILURE (-1) -#define UNINITIALIZED_QUEUE (1) -#define FULLEDED_QUEUE (2) -#define EMPTY_QUEUE (2) -#define OUT_OF_BLOCK_MEMORY (2) - -typedef enum e_transfer_type { - NON_CU_SPLIT, - CU_SPLIT, - OAM, - TRANSFER_TYPE_NUM -} transfer_type_e; - -typedef enum e_cu_flag { - C_PLANE, - U_PLANE -} cu_flag_e; - -typedef union tHandleId { - uint32_t value; - struct { - uint8_t rsv; - uint8_t type_id; - uint8_t inst_id; - uint8_t port_id; - }; -} HandleId_t; - -typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); - -typedef struct t_queue_info { - uint32_t tx_desc_num; - uint32_t rx_desc_num; - uint32_t tx_block_size; - uint32_t rx_block_size; - uint16_t tx_block_num; - uint16_t rx_block_num; - uint16_t directions; - uint16_t rsv; - msg_transfer_callback tx_callback; - msg_transfer_callback rx_callback; -} queue_info_s; - -typedef struct t_transfer_type_info { - queue_info_s queue_cplane_info; - queue_info_s queue_uplane_info; -} transfer_type_info_s; - -int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); -int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag); -int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); -int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); -int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag); -int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); -int32_t msg_transfer_close(int32_t handle_id); - -#endif - +// +FHDR------------------------------------------------------------ +// Copyright (c) 2022 SmartLogic. +// ALL RIGHTS RESERVED +// ----------------------------------------------------------------- +// Filename : msg_transfer_layer.h +// Author : xianfeng.du +// Created On : 2022-06-29 +// Last Modified : +// ----------------------------------------------------------------- +// Description: +// +// +// -FHDR------------------------------------------------------------ + +#ifndef __MSG_TRANSFER_LAYER_H__ +#define __MSG_TRANSFER_LAYER_H__ + +#include "typedef.h" + +#define MAX_INSTANCE_NUM (4) //(2) +#define MAX_PORT_NUM (4) + +#define SUCCESS (0) +#define FAILURE (-1) +#define UNINITIALIZED_QUEUE (1) +#define FULLEDED_QUEUE (2) +#define EMPTY_QUEUE (2) +#define OUT_OF_BLOCK_MEMORY (2) + +typedef enum e_transfer_type { + NON_CU_SPLIT, + CU_SPLIT, + OAM, + TRANSFER_TYPE_NUM +} transfer_type_e; + +typedef enum e_cu_flag { + C_PLANE, + U_PLANE +} cu_flag_e; + +typedef union tHandleId { + uint32_t value; + struct { + uint8_t rsv; + uint8_t type_id; + uint8_t inst_id; + uint8_t port_id; + }; +} HandleId_t; + +typedef uint32_t (*msg_transfer_callback)(const char* buf,uint32_t payloadSize); + +typedef struct t_queue_info { + uint32_t tx_desc_num; + uint32_t rx_desc_num; + uint32_t tx_block_size; + uint32_t rx_block_size; + uint16_t tx_block_num; + uint16_t rx_block_num; + uint16_t directions; + uint16_t rsv; + msg_transfer_callback tx_callback; + msg_transfer_callback rx_callback; +} queue_info_s; + +typedef struct t_transfer_type_info { + queue_info_s queue_cplane_info; + queue_info_s queue_uplane_info; +} transfer_type_info_s; + +int32_t msg_transfer_init(uint16_t port_index, uint16_t transfer_type, uint16_t inst_id, const transfer_type_info_s* transfer_type_info); +int32_t msg_transfer_send_start(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_alloc_msg(int32_t handle_id, uint16_t cu_flag, uint32_t bufSize, char** buf, uint32_t* availableSize, uint32_t* offset); +int32_t msg_transfer_send_msg(int32_t handle_id, uint16_t cu_flag, uint8_t* msg_ptr, uint32_t offset, uint32_t msg_len); +int32_t msg_transfer_send_end(int32_t handle_id, uint16_t cu_flag); +int32_t msg_transfer_receive(int32_t handle_id, uint16_t cu_flag, uint32_t offset, uint32_t len, uint8_t** msg_ptr); +int32_t msg_transfer_close(int32_t handle_id); + +#endif + diff --git a/test/case0/src/testcase.c b/test/case0/src/testcase.c index ee07bf8..03cae69 100644 --- a/test/case0/src/testcase.c +++ b/test/case0/src/testcase.c @@ -111,10 +111,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case20/src/testcase20.c b/test/case20/src/testcase20.c index 05c7e9e..31326bb 100644 --- a/test/case20/src/testcase20.c +++ b/test/case20/src/testcase20.c @@ -113,10 +113,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case21/src/testcase21.c b/test/case21/src/testcase21.c index b4704ec..2ee9e94 100644 --- a/test/case21/src/testcase21.c +++ b/test/case21/src/testcase21.c @@ -142,10 +142,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case22/src/testcase22.c b/test/case22/src/testcase22.c index b5d3596..2b2ea2e 100644 --- a/test/case22/src/testcase22.c +++ b/test/case22/src/testcase22.c @@ -141,10 +141,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case23/src/testcase23.c b/test/case23/src/testcase23.c index 931b1ef..74ebd49 100644 --- a/test/case23/src/testcase23.c +++ b/test/case23/src/testcase23.c @@ -141,10 +141,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case24/src/testcase24.c b/test/case24/src/testcase24.c index a2e47b0..8ac934d 100644 --- a/test/case24/src/testcase24.c +++ b/test/case24/src/testcase24.c @@ -36,6 +36,12 @@ uint32_t gu32_tick_receive_ctrl = 0; uint32_t gu32_tick_from_tx_ctrl = 0; uint32_t gu32_rx_callback_data_cnt = 0; +uint32_t gu32_switch = 0; + +void osp_switch(uint32_t u32_switch) +{ + gu32_switch = u32_switch; +} uint32_t rx_callback_data(const char* buf,uint32_t payloadSize) { @@ -66,7 +72,10 @@ uint32_t rx_callback_data(const char* buf,uint32_t payloadSize) if ((diff > 1020000) || (diff < 980000)) { - UCP_PRINT_ERROR("[0],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + if((gu32_switch & 0x01) == 1) + { + UCP_PRINT_ERROR("[0],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + } } return payloadSize; } @@ -97,7 +106,10 @@ uint32_t rx1_callback_data(const char* buf,uint32_t payloadSize) if ((diff > 1020000) || (diff < 980000)) { - UCP_PRINT_ERROR("[1],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + if((gu32_switch & 0x10) == 1) + { + UCP_PRINT_ERROR("[1],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + } } return payloadSize; @@ -129,7 +141,10 @@ uint32_t rx2_callback_data(const char* buf,uint32_t payloadSize) if ((diff > 1020000) || (diff < 980000)) { - UCP_PRINT_ERROR("[1],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + if((gu32_switch & 0x100) == 1) + { + UCP_PRINT_ERROR("[2],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + } } return payloadSize; @@ -161,7 +176,10 @@ uint32_t rx3_callback_data(const char* buf,uint32_t payloadSize) if ((diff > 1020000) || (diff < 980000)) { - UCP_PRINT_ERROR("[1],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + if((gu32_switch & 0x1000) == 1) + { + UCP_PRINT_ERROR("[3],qNO[%d],sfn[%d],slot[%d],diff[%d]",UCP4008_TRAFFIC_NR_eMBB_DATA,sfn,slot,diff); + } } return payloadSize; @@ -213,10 +231,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; @@ -238,7 +256,7 @@ static inline void msg_transfer_cfg(void) transfer_type_info_s transfer_type_info; for (inst_id=0; inst_idqueue_cplane_info = c_plane; diff --git a/test/case4/src/testcase.c b/test/case4/src/testcase.c index 27d5e4a..4d921ca 100644 --- a/test/case4/src/testcase.c +++ b/test/case4/src/testcase.c @@ -203,11 +203,11 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam_spu; //c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case45/src/testcase45.c b/test/case45/src/testcase45.c index 21c923b..41373c7 100644 --- a/test/case45/src/testcase45.c +++ b/test/case45/src/testcase45.c @@ -118,10 +118,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case46/src/testcase46.c b/test/case46/src/testcase46.c index 3bc34e1..a00901c 100644 --- a/test/case46/src/testcase46.c +++ b/test/case46/src/testcase46.c @@ -118,10 +118,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case48/src/testcase48.c b/test/case48/src/testcase48.c index f9c2f98..68ff906 100644 --- a/test/case48/src/testcase48.c +++ b/test/case48/src/testcase48.c @@ -118,10 +118,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane; diff --git a/test/case5/src/testcase5.c b/test/case5/src/testcase5.c index 4581db1..c47030f 100644 --- a/test/case5/src/testcase5.c +++ b/test/case5/src/testcase5.c @@ -111,10 +111,10 @@ static inline void get_msg_transfer_info(uint16_t port_index, uint16_t inst_id, break; case OAM: c_plane.rx_block_size = 0x100000; - c_plane.rx_block_num = 32; + c_plane.rx_block_num = 16; c_plane.rx_callback = rx_callback_oam; c_plane.tx_block_size = 0x8000; - c_plane.tx_block_num = 8; + c_plane.tx_block_num = 4; c_plane.tx_callback = NULL; transfer_type_info_ptr->queue_cplane_info = c_plane;