From: Jun Yang <[email protected]> Dump ECPRI header over ethernet/vlan/udp. Dump message contents according to various types. ECPRI are set to parser result areas by softparser.
Signed-off-by: Jun Yang <[email protected]> --- drivers/net/dpaa2/dpaa2_parse_dump.h | 124 +++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/drivers/net/dpaa2/dpaa2_parse_dump.h b/drivers/net/dpaa2/dpaa2_parse_dump.h index 78fd3b768c..bcab3bf0cb 100644 --- a/drivers/net/dpaa2/dpaa2_parse_dump.h +++ b/drivers/net/dpaa2/dpaa2_parse_dump.h @@ -74,6 +74,122 @@ struct dpaa2_fapr_field_info support_dump_fields[] = { } }; +static inline void +dpaa2_print_ecpri(struct dpaa2_fapr_array *fapr) +{ + uint8_t ecpri_type; + struct rte_ecpri_combined_msg_hdr ecpri_msg; + + ecpri_type = fapr->pr[DPAA2_FAFE_PSR_OFFSET]; + if ((ecpri_type >> 1) > 7) { + DPAA2_PR_PRINT("Invalid ECPRI type(0x%02x)\r\n", + ecpri_type); + } else { + DPAA2_PR_PRINT("ECPRI type %d present\r\n", + ecpri_type >> 1); + if (ecpri_type == ECPRI_FAFE_TYPE_0 || + ecpri_type == ECPRI_FAFE_TYPE_1) { + /* Type 0 is identical to type1*/ + ecpri_msg.type0.pc_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1]; + ecpri_msg.type0.pc_id = + ecpri_msg.type0.pc_id << 8; + ecpri_msg.type0.pc_id |= + fapr->pr[DPAA2_ECPRI_MSG_OFFSET]; + + ecpri_msg.type0.seq_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3]; + ecpri_msg.type0.seq_id = + ecpri_msg.type0.seq_id << 8; + ecpri_msg.type0.seq_id |= + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2]; + + DPAA2_PR_PRINT("pc_id(0x%04x) seq_id(0x%04x)\r\n", + rte_be_to_cpu_16(ecpri_msg.type0.pc_id), + rte_be_to_cpu_16(ecpri_msg.type0.seq_id)); + } else if (ecpri_type == ECPRI_FAFE_TYPE_2) { + ecpri_msg.type2.rtc_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1]; + ecpri_msg.type2.rtc_id = + ecpri_msg.type2.rtc_id << 8; + ecpri_msg.type2.rtc_id |= + fapr->pr[DPAA2_ECPRI_MSG_OFFSET]; + + ecpri_msg.type2.seq_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3]; + ecpri_msg.type2.seq_id = + ecpri_msg.type2.seq_id << 8; + ecpri_msg.type2.seq_id |= + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2]; + + DPAA2_PR_PRINT("rtc_id(0x%04x) seq_id(0x%04x)\r\n", + rte_be_to_cpu_16(ecpri_msg.type2.rtc_id), + rte_be_to_cpu_16(ecpri_msg.type2.seq_id)); + } else if (ecpri_type == ECPRI_FAFE_TYPE_3) { + DPAA2_PR_PRINT("ECPRI type3 extract not support\r\n"); + } else if (ecpri_type == ECPRI_FAFE_TYPE_4) { + ecpri_msg.type4.rma_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET]; + ecpri_msg.type4.rw = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1] >> 4; + ecpri_msg.type4.rr = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1] & 0xf; + + ecpri_msg.type4.ele_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3]; + ecpri_msg.type4.ele_id = + ecpri_msg.type4.ele_id << 8; + ecpri_msg.type4.ele_id |= + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2]; + + DPAA2_PR_PRINT("rma_id(0x%02x) rw(0x%02x)", + ecpri_msg.type4.rma_id, ecpri_msg.type4.rw); + DPAA2_PR_PRINT(" rr(0x%02x) ele_id(0x%04x)\r\n", + ecpri_msg.type4.rr, + rte_be_to_cpu_16(ecpri_msg.type4.ele_id)); + } else if (ecpri_type == ECPRI_FAFE_TYPE_5) { + ecpri_msg.type5.msr_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET]; + ecpri_msg.type5.act_type = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1]; + + DPAA2_PR_PRINT("rma_id(0x%02x) rw(0x%02x)\r\n", + ecpri_msg.type5.msr_id, + ecpri_msg.type5.act_type); + } else if (ecpri_type == ECPRI_FAFE_TYPE_6) { + ecpri_msg.type6.rst_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1]; + ecpri_msg.type6.rst_id = + ecpri_msg.type6.rst_id << 8; + ecpri_msg.type6.rst_id |= + fapr->pr[DPAA2_ECPRI_MSG_OFFSET]; + + ecpri_msg.type6.rst_op = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2]; + + DPAA2_PR_PRINT("rst_id(0x%04x) rst_op(0x%02x)\r\n", + rte_be_to_cpu_16(ecpri_msg.type6.rst_id), + ecpri_msg.type6.rst_op); + } else if (ecpri_type == ECPRI_FAFE_TYPE_7) { + ecpri_msg.type7.evt_id = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET]; + ecpri_msg.type7.evt_type = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1]; + ecpri_msg.type7.seq = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2]; + ecpri_msg.type7.number = + fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3]; + + DPAA2_PR_PRINT("evt_id(0x%02x) evt_type(0x%02x)", + ecpri_msg.type7.evt_id, + ecpri_msg.type7.evt_type); + DPAA2_PR_PRINT(" seq(0x%02x) number(0x%02x)\r\n", + ecpri_msg.type7.seq, + ecpri_msg.type7.number); + } + } +} + static inline void dpaa2_print_faf(struct dpaa2_fapr_array *fapr) { @@ -82,6 +198,7 @@ dpaa2_print_faf(struct dpaa2_fapr_array *fapr) int i, byte_pos, bit_pos, vxlan = 0, vxlan_vlan = 0; struct rte_ether_hdr vxlan_in_eth; uint16_t vxlan_vlan_tci; + int ecpri = 0; for (i = 0; i < faf_bit_len; i++) { faf_bits[i].position = i; @@ -111,6 +228,8 @@ dpaa2_print_faf(struct dpaa2_fapr_array *fapr) faf_bits[i].name = "UDP Present"; else if (i == FAF_TCP_FRAM) faf_bits[i].name = "TCP Present"; + else if (i == FAFE_ECPRI_FRAM) + faf_bits[i].name = "ECPRI Present"; else faf_bits[i].name = "Check RM for this unusual frame"; } @@ -124,6 +243,8 @@ dpaa2_print_faf(struct dpaa2_fapr_array *fapr) faf_bits[i].position, faf_bits[i].name); if (i == FAF_VXLAN_FRAM) vxlan = 1; + else if (i == FAFE_ECPRI_FRAM) + ecpri = 1; } } @@ -192,6 +313,9 @@ dpaa2_print_faf(struct dpaa2_fapr_array *fapr) vxlan_vlan_tci); } } + + if (ecpri) + dpaa2_print_ecpri(fapr); } static inline void -- 2.43.0

