Merge branch 'dev_ck_v2.1_feature_enhancement#1118' into 'dev_ck_v2.1'
帧头偏移设置、查询功能入库 See merge request ucp/driver/ucp4008_platform_spu!48
This commit is contained in:
commit
1c78485f0c
@ -132,6 +132,19 @@ typedef struct _tagCpriSetDelayRsp
|
||||
uint8_t u8rsv[2];
|
||||
}stCpriSetDelayRsp;
|
||||
|
||||
typedef struct _tagCpriFrameHeadOffsetReq {
|
||||
uint16_t u16frame_head_offset;
|
||||
uint8_t u8rsv[2];
|
||||
} stCpriFrameHeadOffsetReq;
|
||||
typedef struct _tagCpriFrameHeadOffsetRsp {
|
||||
uint8_t u8result;
|
||||
uint8_t u8rsv[3];
|
||||
} stCpriFrameHeadOffsetRsp;
|
||||
typedef struct _tagCpriGetFrameHeadOffset {
|
||||
uint8_t u8result;
|
||||
uint8_t u8rsv;
|
||||
uint16_t u16frame_head_offset;
|
||||
}stCpriGetFrameHeadOffset;
|
||||
typedef struct _tagOamMsgTransferHeader {
|
||||
uint8_t numMsg;
|
||||
uint8_t cellIndex;
|
||||
@ -152,9 +165,13 @@ void cpri_delay_measurement_ck();
|
||||
|
||||
void update_cpri_link_status();
|
||||
|
||||
// cpri延时设置与获取
|
||||
stCpriSetDelayRsp* set_cpri_link_delay(stCpriSetLinkDelay* pCpriSetDelay);
|
||||
void get_cpri_link_delay(uint8_t u8fiber_port, stCpriGetLinkDelay* pCpriGetDelay);
|
||||
void get_cpri_rndtrip_delay(uint8_t u8fiber_port, stCpriGetRndDelay* pCpriRndDealy);
|
||||
|
||||
// cpri帧头偏移设置与获取
|
||||
stCpriFrameHeadOffsetRsp* set_frame_head_offset(stCpriFrameHeadOffsetReq* pCpriFrameHeadOffset);
|
||||
void get_cpri_framehead_offset(stCpriGetFrameHeadOffset* pCpriFrameHeadOffset);
|
||||
|
||||
#endif /* CPRI_DELAY_H_ */
|
||||
|
@ -36,6 +36,8 @@ typedef struct tEcsRfmDmLocalMgt {
|
||||
stCpriSetLinkDelay* pOamBaseDelaySetRspPtr ;
|
||||
stCpriGetLinkDelay* pOamBaseDelayQryRspPtr ;
|
||||
stCpriGetRndDelay* pOamFiberDelayQryRspPtr ;
|
||||
stCpriFrameHeadOffsetRsp* pOamFrameHeadOffsetRspPtr ;
|
||||
stCpriGetFrameHeadOffset* pOamFrameHeadOffsetQryRspPtr;
|
||||
} EcsRfmDmLocalMgt_t;
|
||||
|
||||
EcsRfmDmLocalMgt_t* get_ecs_rfm_dm_local_mgt(void);
|
||||
|
@ -78,6 +78,16 @@ int32_t ecs_rfm_dm_alloc(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
pEcsDmLocalMgt->pOamFrameHeadOffsetRspPtr = (stCpriFrameHeadOffsetRsp*)memSectionAlloc(pMemSection, sizeof(stCpriFrameHeadOffsetRsp), MEM_ALIGNED_4BYTES, "OamFrameHeadOffsetRsp");
|
||||
if (NULL == pEcsDmLocalMgt->pOamFrameHeadOffsetRspPtr)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
pEcsDmLocalMgt->pOamFrameHeadOffsetQryRspPtr = (stCpriGetFrameHeadOffset*)memSectionAlloc(pMemSection, sizeof(stCpriGetFrameHeadOffset), MEM_ALIGNED_4BYTES, "pOamFrameHeadOffsetQryRspPtr");
|
||||
if (NULL == pEcsDmLocalMgt->pOamFrameHeadOffsetQryRspPtr)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
for (int i = 0; i < MTIMER_INTEGRATED_MAX_NUM; i++)
|
||||
{
|
||||
pEcsDmLocalMgt->pMtimerPara[i] = (stMtimerPara*)memSectionAlloc(pMemSection, sizeof(stMtimerPara), MEM_ALIGNED_4BYTES, "pMtimerPara[i]");
|
||||
|
@ -481,3 +481,32 @@ void get_cpri_rndtrip_delay(uint8_t u8fiber_port, stCpriGetRndDelay* pCpriRndDea
|
||||
return;
|
||||
}
|
||||
|
||||
stCpriFrameHeadOffsetRsp stCpriFrameHeadOff;
|
||||
stCpriFrameHeadOffsetRsp* set_frame_head_offset(stCpriFrameHeadOffsetReq* pCpriFrameHeadOffset)
|
||||
{
|
||||
memset(&stCpriFrameHeadOff, 0, sizeof(stCpriFrameHeadOff));
|
||||
if (NULL == pCpriFrameHeadOffset)
|
||||
{
|
||||
stCpriFrameHeadOff.u8result = 0;
|
||||
return &stCpriFrameHeadOff;
|
||||
}
|
||||
uint32_t addr = 0;
|
||||
for (int8_t i = 0; i < PHY_SCS_MAX_NUM; i++)
|
||||
{
|
||||
addr = (uint32_t)&(phyPara[i].gpsOffset);
|
||||
do_write_short(addr, pCpriFrameHeadOffset->u16frame_head_offset);
|
||||
}
|
||||
stCpriFrameHeadOff.u8result = 1;
|
||||
return &stCpriFrameHeadOff;
|
||||
}
|
||||
void get_cpri_framehead_offset(stCpriGetFrameHeadOffset* pCpriFrameHeadOffset)
|
||||
{
|
||||
if (NULL == pCpriFrameHeadOffset)
|
||||
{
|
||||
return;
|
||||
}
|
||||
uint32_t addr = (uint32_t)&(phyPara[0].gpsOffset);
|
||||
pCpriFrameHeadOffset->u16frame_head_offset = do_read_volatile_short(addr);
|
||||
pCpriFrameHeadOffset->u8result = 1;
|
||||
return;
|
||||
}
|
||||
|
@ -23,6 +23,11 @@
|
||||
#define SPU_OAM_BASE_DELAY_QRY_RSP 0x203
|
||||
#define SPU_OAM_FIBER_DELAY_QRY_REQ 0x204
|
||||
#define SPU_OAM_FIBER_DELAY_QRY_RSP 0x205
|
||||
#define SPU_OAM_FRAME_HEAD_OFFSET_REQ 0x206
|
||||
#define SPU_OAM_FRAME_HEAD_OFFSET_RSP 0x207
|
||||
#define SPU_OAM_FRAME_HEAD_OFFSET_QRY_REQ 0x208
|
||||
#define SPU_OAM_FRAME_HEAD_OFFSET_QRY_RSP 0x209
|
||||
|
||||
#define MSG_TRANSFER_OAM_MSG_TYPE 0x125
|
||||
#define DM_GLADDR_TO_DMAADDR1(addr) (addr-0x100000)// (addr-0x200000) //
|
||||
|
||||
@ -73,11 +78,29 @@ typedef struct tSpuOamFiberDelayQryRsp {
|
||||
uint32_t u32t14_val;
|
||||
} SpuOamFiberDelayQryRsp_t;
|
||||
|
||||
typedef struct tSpuOamFrameHeadOffsetReq {
|
||||
uint16_t u16frame_head_offset;
|
||||
uint8_t u8rsv[2];
|
||||
} SpuOamFrameHeadOffsetReq_t;
|
||||
|
||||
typedef struct tSpuOamFrameHeadOffsetRsp {
|
||||
uint8_t u8result;
|
||||
uint8_t u8rsv[3];
|
||||
} SpuOamFrameHeadOffsetRsp_t;
|
||||
|
||||
typedef struct tSpuOamFrameHeadOffsetQryRsp {
|
||||
uint8_t u8result;
|
||||
uint8_t u8rsv;
|
||||
uint16_t u16frame_head_offset;
|
||||
}SpuOamFrameHeadOffsetQryRsp_t;
|
||||
|
||||
void oam_msg_init(void);
|
||||
void oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size);
|
||||
void oam_base_delay_proc(SpuOamBaseDelaySetReq_t *spu_oam_base_delay_set_ptr, OamMsgTransferHeader_t *spu_oam_msg_ptr);
|
||||
void oam_base_qry_proc(SpuOamBaseDelayQryReq_t *spu_oam_base_delay_qry_ptr, OamMsgTransferHeader_t *spu_oam_msg_ptr);
|
||||
void oam_fiber_delay_proc(SpuOamFiberDelayQryReq_t *spu_oam_fiber_delay_qry_ptr, OamMsgTransferHeader_t *spu_oam_msg_ptr);
|
||||
void oam_frame_head_offset_proc(SpuOamFrameHeadOffsetReq_t *spu_oam_frame_head_offset_qry_ptr, OamMsgTransferHeader_t *spu_oam_msg_ptr);
|
||||
void oam_frame_head_offset_qry_proc(OamMsgTransferHeader_t *spu_oam_msg_ptr);
|
||||
void oam_msg_proc_test(uint32_t u32msg_addr, uint32_t u32msg_size);
|
||||
static inline uint32_t oam_spu_fill_msg_header(uint8_t inst_id, char* buf, uint32_t size, uint32_t msgType);
|
||||
static inline int32_t oam_spu_send_msg(uint8_t inst_id, uint32_t src_addr, uint32_t size, uint32_t msgType);
|
||||
|
@ -34,7 +34,8 @@ OamMsgTransferHeader_t *g_oam_msg_ptr = NULL;
|
||||
SpuOamBaseDelaySetRsp_t *g_oam_base_delay_set_rsp_ptr = NULL;
|
||||
SpuOamBaseDelayQryRsp_t *g_oam_base_delay_qry_rsp_ptr = NULL;
|
||||
SpuOamFiberDelayQryRsp_t *g_oam_fiber_delay_qry_rsp_ptr = NULL;
|
||||
|
||||
SpuOamFrameHeadOffsetRsp_t *g_oam_frame_head_offset_rsp_ptr = NULL;
|
||||
SpuOamFrameHeadOffsetQryRsp_t *g_oam_frame_head_offset_qry_rsp_ptr = NULL;
|
||||
|
||||
void oam_msg_init(void)
|
||||
{
|
||||
@ -45,10 +46,13 @@ void oam_msg_init(void)
|
||||
g_oam_base_delay_set_rsp_ptr = (SpuOamBaseDelaySetRsp_t *)pEcsDmLocalMgt->pOamBaseDelaySetRspPtr;
|
||||
g_oam_base_delay_qry_rsp_ptr = (SpuOamBaseDelayQryRsp_t *)pEcsDmLocalMgt->pOamBaseDelayQryRspPtr;
|
||||
g_oam_fiber_delay_qry_rsp_ptr = (SpuOamFiberDelayQryRsp_t *)pEcsDmLocalMgt->pOamFiberDelayQryRspPtr;
|
||||
g_oam_frame_head_offset_rsp_ptr = (SpuOamFrameHeadOffsetRsp_t *)pEcsDmLocalMgt->pOamFrameHeadOffsetRspPtr;
|
||||
g_oam_frame_head_offset_qry_rsp_ptr = (SpuOamFrameHeadOffsetQryRsp_t *)pEcsDmLocalMgt->pOamFrameHeadOffsetQryRspPtr;
|
||||
|
||||
memset_ucp(g_oam_base_delay_set_rsp_ptr->u8rsv, 0, 2);
|
||||
memset_ucp(g_oam_base_delay_qry_rsp_ptr->u8rsv, 0, 2);
|
||||
memset_ucp(g_oam_fiber_delay_qry_rsp_ptr->u8rsv, 0, 2);
|
||||
memset_ucp(g_oam_fiber_delay_qry_rsp_ptr->u8rsv, 0, 1);
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 37), g_oam_msg_ptr);
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 56), g_oam_base_delay_set_rsp_ptr);/*0xb7e016e0*/
|
||||
return;
|
||||
@ -65,6 +69,8 @@ void oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
|
||||
SpuOamBaseDelaySetReq_t *oam_base_delay_set_ptr = NULL;
|
||||
SpuOamBaseDelayQryReq_t *oam_base_delay_qry_ptr = NULL;
|
||||
SpuOamFiberDelayQryReq_t *oam_fiber_delay_qry_ptr = NULL;
|
||||
SpuOamFrameHeadOffsetReq_t *oam_frame_head_offset_ptr = NULL;
|
||||
|
||||
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 36), 0x12345678);
|
||||
memset((void *)g_oam_msg_ptr, 0, sizeof(OamMsgTransferHeader_t));
|
||||
@ -74,7 +80,7 @@ void oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 39), msg_buf);
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 40), g_oam_msg_ptr->numMsg);
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 41), g_oam_msg_ptr->msgType);
|
||||
UCP_PRINT_LOG("oam_msg_proc numMsg:%d msg_type:0x%x msg_size:%d\n", g_oam_msg_ptr->numMsg, g_oam_msg_ptr->msgType, msg_size);
|
||||
UCP_PRINT_ERROR("oam_msg_proc numMsg:%d msg_type:0x%x msg_size:%d\n", g_oam_msg_ptr->numMsg, g_oam_msg_ptr->msgType, msg_size);
|
||||
|
||||
for(i = 0; i < g_oam_msg_ptr->numMsg; i++)
|
||||
{
|
||||
@ -83,20 +89,29 @@ void oam_msg_proc(uint32_t u32msg_addr, uint32_t u32msg_size)
|
||||
switch(msg_type)
|
||||
{
|
||||
case SPU_OAM_BASE_DELAY_SET_REQ:
|
||||
UCP_PRINT_LOG("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
UCP_PRINT_ERROR("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
oam_base_delay_set_ptr = (SpuOamBaseDelaySetReq_t *)((uint8_t *)g_oam_msg_ptr + sizeof(OamMsgTransferHeader_t));
|
||||
oam_base_delay_proc(oam_base_delay_set_ptr, g_oam_msg_ptr);
|
||||
break;
|
||||
case SPU_OAM_BASE_DELAY_QRY_REQ:
|
||||
UCP_PRINT_LOG("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
UCP_PRINT_ERROR("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
oam_base_delay_qry_ptr = (SpuOamBaseDelayQryReq_t *)((uint8_t *)g_oam_msg_ptr + sizeof(OamMsgTransferHeader_t));
|
||||
oam_base_qry_proc(oam_base_delay_qry_ptr, g_oam_msg_ptr);
|
||||
break;
|
||||
case SPU_OAM_FIBER_DELAY_QRY_REQ:
|
||||
UCP_PRINT_LOG("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
UCP_PRINT_ERROR("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
oam_fiber_delay_qry_ptr = (SpuOamFiberDelayQryReq_t *)((uint8_t *)g_oam_msg_ptr + sizeof(OamMsgTransferHeader_t));
|
||||
oam_fiber_delay_proc(oam_fiber_delay_qry_ptr, g_oam_msg_ptr);
|
||||
break;
|
||||
case SPU_OAM_FRAME_HEAD_OFFSET_REQ:
|
||||
UCP_PRINT_ERROR("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
oam_frame_head_offset_ptr = (SpuOamFrameHeadOffsetReq_t *)((uint8_t *)g_oam_msg_ptr + sizeof(OamMsgTransferHeader_t));
|
||||
oam_frame_head_offset_proc(oam_frame_head_offset_ptr, g_oam_msg_ptr);
|
||||
break;
|
||||
case SPU_OAM_FRAME_HEAD_OFFSET_QRY_REQ:
|
||||
UCP_PRINT_ERROR("oam_msg_proc numMsg:%d i:%d msg_type:0x%x\n", g_oam_msg_ptr->numMsg, i, msg_type);
|
||||
oam_frame_head_offset_qry_proc(g_oam_msg_ptr);
|
||||
break;
|
||||
default:
|
||||
phy_oam_msg_proc(u32msg_addr, u32msg_size);
|
||||
break;
|
||||
@ -185,6 +200,50 @@ void oam_fiber_delay_proc(SpuOamFiberDelayQryReq_t *spu_oam_fiber_delay_qry_ptr,
|
||||
return;
|
||||
}
|
||||
|
||||
void oam_frame_head_offset_proc(SpuOamFrameHeadOffsetReq_t *spu_oam_frame_head_offset_ptr, OamMsgTransferHeader_t *spu_oam_msg_ptr)
|
||||
{
|
||||
uint8_t u8core_id = (uint8_t)get_core_id();
|
||||
SpuOamFrameHeadOffsetRsp_t *oam_frame_head_offset_rsp_ptr = NULL;
|
||||
|
||||
if(NULL == spu_oam_frame_head_offset_ptr)
|
||||
{
|
||||
UCP_PRINT_ERROR("oam_frame_head_offset_proc is null\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/*调用接口帧头偏移配置结果0:fail 1:ok*/
|
||||
oam_frame_head_offset_rsp_ptr = (SpuOamFrameHeadOffsetRsp_t *)set_frame_head_offset((stCpriFrameHeadOffsetReq*)spu_oam_frame_head_offset_ptr);
|
||||
g_oam_frame_head_offset_rsp_ptr->u8result = oam_frame_head_offset_rsp_ptr->u8result;
|
||||
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 56), g_oam_frame_head_offset_rsp_ptr->u8result);
|
||||
UCP_PRINT_ERROR("oam_frame_head_offset_proc u8result:%d \n", g_oam_frame_head_offset_rsp_ptr->u8result);
|
||||
|
||||
oam_spu_send_msg(spu_oam_msg_ptr->cellIndex, (uint32_t)g_oam_frame_head_offset_rsp_ptr, sizeof(SpuOamFrameHeadOffsetRsp_t), SPU_OAM_FRAME_HEAD_OFFSET_RSP);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void oam_frame_head_offset_qry_proc(OamMsgTransferHeader_t *spu_oam_msg_ptr)
|
||||
{
|
||||
uint8_t u8core_id = (uint8_t)get_core_id();
|
||||
|
||||
if(NULL == spu_oam_msg_ptr)
|
||||
{
|
||||
UCP_PRINT_ERROR("spu_oam_msg_ptr is null\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/*调用接口帧头偏移配置结果0:fail 1:ok*/
|
||||
get_cpri_framehead_offset((stCpriGetFrameHeadOffset *)g_oam_frame_head_offset_qry_rsp_ptr);
|
||||
|
||||
debug_write(DBG_DDR_COMMON_IDX(u8core_id, 57), g_oam_frame_head_offset_qry_rsp_ptr->u16frame_head_offset);
|
||||
UCP_PRINT_ERROR("oam_frame_head_offset_qry_proc u8result:%d u16frame_head_offset:0x%x \n", g_oam_frame_head_offset_qry_rsp_ptr->u8result, g_oam_frame_head_offset_qry_rsp_ptr->u16frame_head_offset);
|
||||
|
||||
oam_spu_send_msg(spu_oam_msg_ptr->cellIndex, (uint32_t)g_oam_frame_head_offset_qry_rsp_ptr, sizeof(SpuOamFrameHeadOffsetQryRsp_t), SPU_OAM_FRAME_HEAD_OFFSET_QRY_RSP);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static inline uint32_t oam_spu_fill_msg_header(uint8_t inst_id, char* buf, uint32_t size, uint32_t msgType)
|
||||
{
|
||||
OamMsgTransferHeader_t header;
|
@ -45,7 +45,7 @@ void phy_queue_polling(void)
|
||||
|
||||
if(SPU_OAM_MSG_TYPE == u8msg_type)/* OAM MSG */
|
||||
{
|
||||
#ifdef TEST_ENABLE
|
||||
#ifdef PCIE_BACKHAUL
|
||||
oam_msg_proc_test(u32msg_addr, u32msg_size);
|
||||
#else
|
||||
oam_msg_proc(u32msg_addr, u32msg_size);
|
||||
|
Loading…
x
Reference in New Issue
Block a user