LCOV - code coverage report
Current view: top level - drivers/net/dpaa2 - dpaa2_parse_dump.h (source / functions) Hit Total Coverage
Test: Code coverage Lines: 0 165 0.0 %
Date: 2025-11-01 17:50:34 Functions: 0 3 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 68 0.0 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: BSD-3-Clause
       2                 :            :  *
       3                 :            :  *   Copyright 2022 NXP
       4                 :            :  *
       5                 :            :  */
       6                 :            : 
       7                 :            : #ifndef _DPAA2_PARSE_DUMP_H
       8                 :            : #define _DPAA2_PARSE_DUMP_H
       9                 :            : 
      10                 :            : #include <rte_event_eth_rx_adapter.h>
      11                 :            : #include <rte_pmd_dpaa2.h>
      12                 :            : 
      13                 :            : #include <dpaa2_hw_pvt.h>
      14                 :            : #include "dpaa2_tm.h"
      15                 :            : 
      16                 :            : #include <mc/fsl_dpni.h>
      17                 :            : #include <mc/fsl_mc_sys.h>
      18                 :            : 
      19                 :            : #include "base/dpaa2_hw_dpni_annot.h"
      20                 :            : 
      21                 :            : #define DPAA2_PR_PRINT printf
      22                 :            : 
      23                 :            : struct dpaa2_faf_bit_info {
      24                 :            :         const char *name;
      25                 :            :         int position;
      26                 :            : };
      27                 :            : 
      28                 :            : struct dpaa2_fapr_field_info {
      29                 :            :         const char *name;
      30                 :            :         uint16_t value;
      31                 :            : };
      32                 :            : 
      33                 :            : struct dpaa2_fapr_array {
      34                 :            :         union {
      35                 :            :                 uint64_t pr_64[DPAA2_FAPR_SIZE / 8];
      36                 :            :                 uint8_t pr[DPAA2_FAPR_SIZE];
      37                 :            :         };
      38                 :            : };
      39                 :            : 
      40                 :            : #define NEXT_HEADER_NAME "Next Header"
      41                 :            : #define ETH_OFF_NAME "ETH OFFSET"
      42                 :            : #define VLAN_TCI_OFF_NAME "VLAN TCI OFFSET"
      43                 :            : #define LAST_ENTRY_OFF_NAME "LAST ETYPE Offset"
      44                 :            : #define L3_OFF_NAME "L3 Offset"
      45                 :            : #define L4_OFF_NAME "L4 Offset"
      46                 :            : #define L5_OFF_NAME "L5 Offset"
      47                 :            : #define NEXT_HEADER_OFF_NAME "Next Header Offset"
      48                 :            : 
      49                 :            : static const
      50                 :            : struct dpaa2_fapr_field_info support_dump_fields[] = {
      51                 :            :         {
      52                 :            :                 .name = NEXT_HEADER_NAME,
      53                 :            :         },
      54                 :            :         {
      55                 :            :                 .name = ETH_OFF_NAME,
      56                 :            :         },
      57                 :            :         {
      58                 :            :                 .name = VLAN_TCI_OFF_NAME,
      59                 :            :         },
      60                 :            :         {
      61                 :            :                 .name = LAST_ENTRY_OFF_NAME,
      62                 :            :         },
      63                 :            :         {
      64                 :            :                 .name = L3_OFF_NAME,
      65                 :            :         },
      66                 :            :         {
      67                 :            :                 .name = L4_OFF_NAME,
      68                 :            :         },
      69                 :            :         {
      70                 :            :                 .name = L5_OFF_NAME,
      71                 :            :         },
      72                 :            :         {
      73                 :            :                 .name = NEXT_HEADER_OFF_NAME,
      74                 :            :         }
      75                 :            : };
      76                 :            : 
      77                 :            : static inline void
      78                 :          0 : dpaa2_print_ecpri(struct dpaa2_fapr_array *fapr)
      79                 :            : {
      80                 :            :         uint8_t ecpri_type;
      81                 :            :         struct rte_ecpri_combined_msg_hdr ecpri_msg;
      82                 :            : 
      83                 :          0 :         ecpri_type = fapr->pr[DPAA2_FAFE_PSR_OFFSET];
      84         [ #  # ]:          0 :         if ((ecpri_type >> 1) > 7) {
      85                 :          0 :                 DPAA2_PR_PRINT("Invalid ECPRI type(0x%02x)\r\n",
      86                 :            :                         ecpri_type);
      87                 :            :         } else {
      88                 :          0 :                 DPAA2_PR_PRINT("ECPRI type %d present\r\n",
      89                 :            :                         ecpri_type >> 1);
      90                 :          0 :                 if (ecpri_type == ECPRI_FAFE_TYPE_0 ||
      91         [ #  # ]:          0 :                         ecpri_type == ECPRI_FAFE_TYPE_1) {
      92                 :            :                         /* Type 0 is identical to type1*/
      93                 :            :                         ecpri_msg.type0.pc_id =
      94                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1];
      95                 :            :                         ecpri_msg.type0.pc_id =
      96                 :          0 :                                 ecpri_msg.type0.pc_id << 8;
      97                 :          0 :                         ecpri_msg.type0.pc_id |=
      98                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET];
      99                 :            : 
     100                 :            :                         ecpri_msg.type0.seq_id =
     101                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3];
     102                 :            :                         ecpri_msg.type0.seq_id =
     103                 :          0 :                                 ecpri_msg.type0.seq_id << 8;
     104                 :          0 :                         ecpri_msg.type0.seq_id |=
     105                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2];
     106                 :            : 
     107                 :          0 :                         DPAA2_PR_PRINT("pc_id(0x%04x) seq_id(0x%04x)\r\n",
     108         [ #  # ]:          0 :                                 rte_be_to_cpu_16(ecpri_msg.type0.pc_id),
     109         [ #  # ]:          0 :                                 rte_be_to_cpu_16(ecpri_msg.type0.seq_id));
     110                 :            :                 } else if (ecpri_type == ECPRI_FAFE_TYPE_2) {
     111                 :            :                         ecpri_msg.type2.rtc_id =
     112                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1];
     113                 :            :                         ecpri_msg.type2.rtc_id =
     114                 :          0 :                                 ecpri_msg.type2.rtc_id << 8;
     115                 :          0 :                         ecpri_msg.type2.rtc_id |=
     116                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET];
     117                 :            : 
     118                 :            :                         ecpri_msg.type2.seq_id =
     119                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3];
     120                 :            :                         ecpri_msg.type2.seq_id =
     121                 :          0 :                                 ecpri_msg.type2.seq_id << 8;
     122                 :          0 :                         ecpri_msg.type2.seq_id |=
     123                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2];
     124                 :            : 
     125                 :          0 :                         DPAA2_PR_PRINT("rtc_id(0x%04x) seq_id(0x%04x)\r\n",
     126         [ #  # ]:          0 :                                 rte_be_to_cpu_16(ecpri_msg.type2.rtc_id),
     127         [ #  # ]:          0 :                                 rte_be_to_cpu_16(ecpri_msg.type2.seq_id));
     128                 :            :                 } else if (ecpri_type == ECPRI_FAFE_TYPE_3) {
     129                 :            :                         DPAA2_PR_PRINT("ECPRI type3 extract not support\r\n");
     130                 :            :                 } else if (ecpri_type == ECPRI_FAFE_TYPE_4) {
     131                 :            :                         ecpri_msg.type4.rma_id =
     132                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET];
     133                 :            :                         ecpri_msg.type4.rw =
     134                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1] >> 4;
     135                 :            :                         ecpri_msg.type4.rr =
     136                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1] & 0xf;
     137                 :            : 
     138                 :            :                         ecpri_msg.type4.ele_id =
     139                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3];
     140                 :            :                         ecpri_msg.type4.ele_id =
     141                 :          0 :                                 ecpri_msg.type4.ele_id << 8;
     142                 :          0 :                         ecpri_msg.type4.ele_id |=
     143                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2];
     144                 :            : 
     145                 :          0 :                         DPAA2_PR_PRINT("rma_id(0x%02x) rw(0x%02x)",
     146                 :            :                                 ecpri_msg.type4.rma_id, ecpri_msg.type4.rw);
     147                 :          0 :                         DPAA2_PR_PRINT(" rr(0x%02x) ele_id(0x%04x)\r\n",
     148                 :            :                                 ecpri_msg.type4.rr,
     149         [ #  # ]:          0 :                                 rte_be_to_cpu_16(ecpri_msg.type4.ele_id));
     150                 :            :                 } else if (ecpri_type == ECPRI_FAFE_TYPE_5) {
     151                 :            :                         ecpri_msg.type5.msr_id =
     152                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET];
     153                 :            :                         ecpri_msg.type5.act_type =
     154                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1];
     155                 :            : 
     156                 :          0 :                         DPAA2_PR_PRINT("rma_id(0x%02x) rw(0x%02x)\r\n",
     157                 :            :                                 ecpri_msg.type5.msr_id,
     158                 :            :                                 ecpri_msg.type5.act_type);
     159                 :            :                 } else if (ecpri_type == ECPRI_FAFE_TYPE_6) {
     160                 :            :                         ecpri_msg.type6.rst_id =
     161                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1];
     162                 :            :                         ecpri_msg.type6.rst_id =
     163                 :          0 :                                 ecpri_msg.type6.rst_id << 8;
     164                 :          0 :                         ecpri_msg.type6.rst_id |=
     165                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET];
     166                 :            : 
     167                 :            :                         ecpri_msg.type6.rst_op =
     168                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2];
     169                 :            : 
     170                 :          0 :                         DPAA2_PR_PRINT("rst_id(0x%04x) rst_op(0x%02x)\r\n",
     171         [ #  # ]:          0 :                                 rte_be_to_cpu_16(ecpri_msg.type6.rst_id),
     172                 :            :                                 ecpri_msg.type6.rst_op);
     173                 :            :                 } else if (ecpri_type == ECPRI_FAFE_TYPE_7) {
     174                 :            :                         ecpri_msg.type7.evt_id =
     175                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET];
     176                 :            :                         ecpri_msg.type7.evt_type =
     177                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 1];
     178                 :            :                         ecpri_msg.type7.seq =
     179                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 2];
     180                 :            :                         ecpri_msg.type7.number =
     181                 :          0 :                                 fapr->pr[DPAA2_ECPRI_MSG_OFFSET + 3];
     182                 :            : 
     183                 :          0 :                         DPAA2_PR_PRINT("evt_id(0x%02x) evt_type(0x%02x)",
     184                 :            :                                 ecpri_msg.type7.evt_id,
     185                 :            :                                 ecpri_msg.type7.evt_type);
     186                 :          0 :                         DPAA2_PR_PRINT(" seq(0x%02x) number(0x%02x)\r\n",
     187                 :            :                                 ecpri_msg.type7.seq,
     188                 :            :                                 ecpri_msg.type7.number);
     189                 :            :                 }
     190                 :            :         }
     191                 :          0 : }
     192                 :            : 
     193                 :            : static inline void
     194                 :          0 : dpaa2_print_faf(struct dpaa2_fapr_array *fapr)
     195                 :          0 : {
     196                 :            :         const int faf_bit_len = DPAA2_FAF_TOTAL_SIZE * 8;
     197                 :          0 :         struct dpaa2_faf_bit_info faf_bits[faf_bit_len];
     198                 :            :         int i, byte_pos, bit_pos, vxlan = 0, vxlan_vlan = 0;
     199                 :            :         struct rte_ether_hdr vxlan_in_eth;
     200                 :            :         uint16_t vxlan_vlan_tci;
     201                 :            :         int ecpri = 0;
     202                 :            : 
     203         [ #  # ]:          0 :         for (i = 0; i < faf_bit_len; i++) {
     204                 :          0 :                 faf_bits[i].position = i;
     205         [ #  # ]:          0 :                 if (i == FAFE_VXLAN_IN_VLAN_FRAM)
     206                 :          0 :                         faf_bits[i].name = "VXLAN VLAN Present";
     207                 :            :                 else if (i == FAFE_VXLAN_IN_IPV4_FRAM)
     208                 :          0 :                         faf_bits[i].name = "VXLAN IPV4 Present";
     209                 :            :                 else if (i == FAFE_VXLAN_IN_IPV6_FRAM)
     210                 :          0 :                         faf_bits[i].name = "VXLAN IPV6 Present";
     211                 :            :                 else if (i == FAFE_VXLAN_IN_UDP_FRAM)
     212                 :          0 :                         faf_bits[i].name = "VXLAN UDP Present";
     213                 :            :                 else if (i == FAFE_VXLAN_IN_TCP_FRAM)
     214                 :          0 :                         faf_bits[i].name = "VXLAN TCP Present";
     215                 :            :                 else if (i == FAF_VXLAN_FRAM)
     216                 :          0 :                         faf_bits[i].name = "VXLAN Present";
     217                 :            :                 else if (i == FAF_ETH_FRAM)
     218                 :          0 :                         faf_bits[i].name = "Ethernet MAC Present";
     219                 :            :                 else if (i == FAF_VLAN_FRAM)
     220                 :          0 :                         faf_bits[i].name = "VLAN 1 Present";
     221                 :            :                 else if (i == FAF_IPV4_FRAM)
     222                 :          0 :                         faf_bits[i].name = "IPv4 1 Present";
     223                 :            :                 else if (i == FAF_IPV6_FRAM)
     224                 :          0 :                         faf_bits[i].name = "IPv6 1 Present";
     225                 :            :                 else if (i == FAF_IP_FRAG_FRAM)
     226                 :          0 :                         faf_bits[i].name = "IP fragment Present";
     227                 :            :                 else if (i == FAF_UDP_FRAM)
     228                 :          0 :                         faf_bits[i].name = "UDP Present";
     229                 :            :                 else if (i == FAF_TCP_FRAM)
     230                 :          0 :                         faf_bits[i].name = "TCP Present";
     231                 :            :                 else if (i == FAFE_ECPRI_FRAM)
     232                 :          0 :                         faf_bits[i].name = "ECPRI Present";
     233                 :            :                 else
     234                 :          0 :                         faf_bits[i].name = "Check RM for this unusual frame";
     235                 :            :         }
     236                 :            : 
     237                 :            :         DPAA2_PR_PRINT("Frame Annotation Flags:\r\n");
     238         [ #  # ]:          0 :         for (i = 0; i < faf_bit_len; i++) {
     239                 :          0 :                 byte_pos = i / 8 + DPAA2_FAFE_PSR_OFFSET;
     240                 :          0 :                 bit_pos = i % 8;
     241         [ #  # ]:          0 :                 if (fapr->pr[byte_pos] & (1 << (7 - bit_pos))) {
     242                 :          0 :                         DPAA2_PR_PRINT("FAF bit %d : %s\r\n",
     243                 :            :                                 faf_bits[i].position, faf_bits[i].name);
     244         [ #  # ]:          0 :                         if (i == FAF_VXLAN_FRAM)
     245                 :            :                                 vxlan = 1;
     246         [ #  # ]:          0 :                         else if (i == FAFE_ECPRI_FRAM)
     247                 :            :                                 ecpri = 1;
     248                 :            :                 }
     249                 :            :         }
     250                 :            : 
     251         [ #  # ]:          0 :         if (vxlan) {
     252                 :          0 :                 vxlan_in_eth.dst_addr.addr_bytes[0] =
     253                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_DADDR0_OFFSET];
     254                 :          0 :                 vxlan_in_eth.dst_addr.addr_bytes[1] =
     255                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_DADDR1_OFFSET];
     256                 :          0 :                 vxlan_in_eth.dst_addr.addr_bytes[2] =
     257                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_DADDR2_OFFSET];
     258                 :          0 :                 vxlan_in_eth.dst_addr.addr_bytes[3] =
     259                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_DADDR3_OFFSET];
     260                 :          0 :                 vxlan_in_eth.dst_addr.addr_bytes[4] =
     261                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_DADDR4_OFFSET];
     262                 :          0 :                 vxlan_in_eth.dst_addr.addr_bytes[5] =
     263                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_DADDR5_OFFSET];
     264                 :            : 
     265                 :          0 :                 vxlan_in_eth.src_addr.addr_bytes[0] =
     266                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_SADDR0_OFFSET];
     267                 :          0 :                 vxlan_in_eth.src_addr.addr_bytes[1] =
     268                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_SADDR1_OFFSET];
     269                 :          0 :                 vxlan_in_eth.src_addr.addr_bytes[2] =
     270                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_SADDR2_OFFSET];
     271                 :          0 :                 vxlan_in_eth.src_addr.addr_bytes[3] =
     272                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_SADDR3_OFFSET];
     273                 :          0 :                 vxlan_in_eth.src_addr.addr_bytes[4] =
     274                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_SADDR4_OFFSET];
     275                 :          0 :                 vxlan_in_eth.src_addr.addr_bytes[5] =
     276                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_SADDR5_OFFSET];
     277                 :            : 
     278                 :            :                 vxlan_in_eth.ether_type =
     279                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_TYPE_OFFSET];
     280                 :            :                 vxlan_in_eth.ether_type =
     281                 :          0 :                         vxlan_in_eth.ether_type << 8;
     282                 :          0 :                 vxlan_in_eth.ether_type |=
     283                 :          0 :                         fapr->pr[DPAA2_VXLAN_IN_TYPE_OFFSET + 1];
     284                 :            : 
     285         [ #  # ]:          0 :                 if (vxlan_in_eth.ether_type == RTE_ETHER_TYPE_VLAN)
     286                 :            :                         vxlan_vlan = 1;
     287                 :            :                 DPAA2_PR_PRINT("VXLAN inner eth:\r\n");
     288                 :            :                 DPAA2_PR_PRINT("dst addr: ");
     289         [ #  # ]:          0 :                 for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) {
     290         [ #  # ]:          0 :                         if (i != 0)
     291                 :            :                                 DPAA2_PR_PRINT(":");
     292                 :          0 :                         DPAA2_PR_PRINT("%02x",
     293                 :          0 :                                 vxlan_in_eth.dst_addr.addr_bytes[i]);
     294                 :            :                 }
     295                 :            :                 DPAA2_PR_PRINT("\r\n");
     296                 :            :                 DPAA2_PR_PRINT("src addr: ");
     297         [ #  # ]:          0 :                 for (i = 0; i < RTE_ETHER_ADDR_LEN; i++) {
     298         [ #  # ]:          0 :                         if (i != 0)
     299                 :            :                                 DPAA2_PR_PRINT(":");
     300                 :          0 :                         DPAA2_PR_PRINT("%02x",
     301                 :          0 :                                 vxlan_in_eth.src_addr.addr_bytes[i]);
     302                 :            :                 }
     303                 :            :                 DPAA2_PR_PRINT("\r\n");
     304                 :          0 :                 DPAA2_PR_PRINT("type: 0x%04x\r\n",
     305                 :            :                         vxlan_in_eth.ether_type);
     306         [ #  # ]:          0 :                 if (vxlan_vlan) {
     307                 :          0 :                         vxlan_vlan_tci = fapr->pr[DPAA2_VXLAN_IN_TCI_OFFSET];
     308                 :          0 :                         vxlan_vlan_tci = vxlan_vlan_tci << 8;
     309                 :          0 :                         vxlan_vlan_tci |=
     310                 :          0 :                                 fapr->pr[DPAA2_VXLAN_IN_TCI_OFFSET + 1];
     311                 :            : 
     312                 :          0 :                         DPAA2_PR_PRINT("vlan tci: 0x%04x\r\n",
     313                 :            :                                 vxlan_vlan_tci);
     314                 :            :                 }
     315                 :            :         }
     316                 :            : 
     317         [ #  # ]:          0 :         if (ecpri)
     318                 :          0 :                 dpaa2_print_ecpri(fapr);
     319                 :          0 : }
     320                 :            : 
     321                 :            : static inline void
     322                 :          0 : dpaa2_print_parse_result(struct dpaa2_annot_hdr *annotation)
     323                 :            : {
     324                 :            :         struct dpaa2_fapr_array fapr;
     325                 :            :         struct dpaa2_fapr_field_info
     326                 :            :                 fapr_fields[sizeof(support_dump_fields) /
     327                 :            :                 sizeof(struct dpaa2_fapr_field_info)];
     328                 :            :         uint64_t len, i;
     329                 :            : 
     330                 :          0 :         memcpy(&fapr, &annotation->word3, DPAA2_FAPR_SIZE);
     331         [ #  # ]:          0 :         for (i = 0; i < (DPAA2_FAPR_SIZE / 8); i++)
     332         [ #  # ]:          0 :                 fapr.pr_64[i] = rte_cpu_to_be_64(fapr.pr_64[i]);
     333                 :            : 
     334                 :            :         memcpy(fapr_fields, support_dump_fields,
     335                 :            :                 sizeof(support_dump_fields));
     336                 :            : 
     337                 :          0 :         for (i = 0;
     338         [ #  # ]:          0 :                 i < sizeof(fapr_fields) /
     339                 :            :                 sizeof(struct dpaa2_fapr_field_info);
     340                 :          0 :                 i++) {
     341         [ #  # ]:          0 :                 if (!strcmp(fapr_fields[i].name, NEXT_HEADER_NAME)) {
     342                 :          0 :                         fapr_fields[i].value = fapr.pr[DPAA2_PR_NXTHDR_OFFSET];
     343                 :          0 :                         fapr_fields[i].value = fapr_fields[i].value << 8;
     344                 :          0 :                         fapr_fields[i].value |=
     345                 :          0 :                                 fapr.pr[DPAA2_PR_NXTHDR_OFFSET + 1];
     346         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, ETH_OFF_NAME)) {
     347                 :          0 :                         fapr_fields[i].value = fapr.pr[DPAA2_PR_ETH_OFF_OFFSET];
     348         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, VLAN_TCI_OFF_NAME)) {
     349                 :          0 :                         fapr_fields[i].value = fapr.pr[DPAA2_PR_TCI_OFF_OFFSET];
     350         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, LAST_ENTRY_OFF_NAME)) {
     351                 :          0 :                         fapr_fields[i].value =
     352                 :          0 :                                 fapr.pr[DPAA2_PR_LAST_ETYPE_OFFSET];
     353         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, L3_OFF_NAME)) {
     354                 :          0 :                         fapr_fields[i].value = fapr.pr[DPAA2_PR_L3_OFF_OFFSET];
     355         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, L4_OFF_NAME)) {
     356                 :          0 :                         fapr_fields[i].value = fapr.pr[DPAA2_PR_L4_OFF_OFFSET];
     357         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, L5_OFF_NAME)) {
     358                 :          0 :                         fapr_fields[i].value = fapr.pr[DPAA2_PR_L5_OFF_OFFSET];
     359         [ #  # ]:          0 :                 } else if (!strcmp(fapr_fields[i].name, NEXT_HEADER_OFF_NAME)) {
     360                 :          0 :                         fapr_fields[i].value =
     361                 :          0 :                                 fapr.pr[DPAA2_PR_NXTHDR_OFF_OFFSET];
     362                 :            :                 }
     363                 :            :         }
     364                 :            : 
     365                 :            :         len = sizeof(fapr_fields) / sizeof(struct dpaa2_fapr_field_info);
     366                 :            :         DPAA2_PR_PRINT("Parse Result:\r\n");
     367         [ #  # ]:          0 :         for (i = 0; i < len; i++) {
     368                 :          0 :                 DPAA2_PR_PRINT("%21s : 0x%02x\r\n",
     369                 :          0 :                         fapr_fields[i].name, fapr_fields[i].value);
     370                 :            :         }
     371                 :          0 :         dpaa2_print_faf(&fapr);
     372                 :          0 : }
     373                 :            : 
     374                 :            : #endif

Generated by: LCOV version 1.14