From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8E24345B3C for ; Tue, 15 Oct 2024 05:13:59 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9465B4027F; Tue, 15 Oct 2024 05:13:59 +0200 (CEST) Received: from dpdk.org (dpdk.org [92.243.24.197]) by mails.dpdk.org (Postfix) with ESMTP id B16C340156 for ; Tue, 15 Oct 2024 05:13:58 +0200 (CEST) Received: by dpdk.org (Postfix, from userid 65534) id 9ADD6120757; Tue, 15 Oct 2024 05:13:58 +0200 (CEST) Subject: |WARNING| pw145941 [PATCH v1 11/18] net/r8169: implement Rx path In-Reply-To: <20241015030928.70642-12-howard_wang@realsil.com.cn> References: <20241015030928.70642-12-howard_wang@realsil.com.cn> To: test-report@dpdk.org From: checkpatch@dpdk.org Cc: Howard Wang Message-Id: <20241015031358.9ADD6120757@dpdk.org> Date: Tue, 15 Oct 2024 05:13:58 +0200 (CEST) X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: test-report-bounces@dpdk.org Test-Label: checkpatch Test-Status: WARNING http://dpdk.org/patch/145941 _coding style issues_ CHECK:CAMELCASE: Avoid CamelCase: #112: FILE: drivers/net/r8169/r8169_base.h:588: +#define Jumbo_Frame_9k (9 * 1024 - ETH_HLEN - VLAN_HLEN - RTE_ETHER_CRC_LEN) CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects? #114: FILE: drivers/net/r8169/r8169_base.h:590: +#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL << (n)) - 1)) ERROR:CODE_INDENT: code indent should use tabs where possible #128: FILE: drivers/net/r8169/r8169_ethdev.c:42: + struct rte_eth_dev_info *dev_info);$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #128: FILE: drivers/net/r8169/r8169_ethdev.c:42: + struct rte_eth_dev_info *dev_info);$ ERROR:CODE_INDENT: code indent should use tabs where possible #221: FILE: drivers/net/r8169/r8169_ethdev.c:351: +^I RTE_ETH_LINK_SPEED_100M_HD | RTE_ETH_LINK_SPEED_100M |$ ERROR:CODE_INDENT: code indent should use tabs where possible #222: FILE: drivers/net/r8169/r8169_ethdev.c:352: +^I RTE_ETH_LINK_SPEED_1G;$ ERROR:CODE_INDENT: code indent should use tabs where possible #235: FILE: drivers/net/r8169/r8169_ethdev.c:365: +^I dev_info->rx_queue_offload_capa);$ ERROR:CODE_INDENT: code indent should use tabs where possible #282: FILE: drivers/net/r8169/r8169_ethdev.h:114: + uint16_t nb_pkts);$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #282: FILE: drivers/net/r8169/r8169_ethdev.h:114: + uint16_t nb_pkts);$ ERROR:CODE_INDENT: code indent should use tabs where possible #287: FILE: drivers/net/r8169/r8169_ethdev.h:119: + struct rte_eth_rxq_info *qinfo);$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #287: FILE: drivers/net/r8169/r8169_ethdev.h:119: + struct rte_eth_rxq_info *qinfo);$ ERROR:CODE_INDENT: code indent should use tabs where possible #292: FILE: drivers/net/r8169/r8169_ethdev.h:124: + uint16_t nb_rx_desc, unsigned int socket_id,$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #292: FILE: drivers/net/r8169/r8169_ethdev.h:124: + uint16_t nb_rx_desc, unsigned int socket_id,$ ERROR:CODE_INDENT: code indent should use tabs where possible #293: FILE: drivers/net/r8169/r8169_ethdev.h:125: + const struct rte_eth_rxconf *rx_conf,$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #293: FILE: drivers/net/r8169/r8169_ethdev.h:125: + const struct rte_eth_rxconf *rx_conf,$ ERROR:CODE_INDENT: code indent should use tabs where possible #294: FILE: drivers/net/r8169/r8169_ethdev.h:126: + struct rte_mempool *mb_pool);$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #294: FILE: drivers/net/r8169/r8169_ethdev.h:126: + struct rte_mempool *mb_pool);$ CHECK:CAMELCASE: Avoid CamelCase: <_DescStatusBit> #339: FILE: drivers/net/r8169/r8169_rxtx.c:62: +enum _DescStatusBit { CHECK:CAMELCASE: Avoid CamelCase: #340: FILE: drivers/net/r8169/r8169_rxtx.c:63: + DescOwn = (1 << 31), /* Descriptor is owned by NIC. */ CHECK:CAMELCASE: Avoid CamelCase: #341: FILE: drivers/net/r8169/r8169_rxtx.c:64: + RingEnd = (1 << 30), /* End of descriptor ring */ CHECK:CAMELCASE: Avoid CamelCase: #342: FILE: drivers/net/r8169/r8169_rxtx.c:65: + FirstFrag = (1 << 29), /* First segment of a packet */ CHECK:CAMELCASE: Avoid CamelCase: #343: FILE: drivers/net/r8169/r8169_rxtx.c:66: + LastFrag = (1 << 28), /* Final segment of a packet */ CHECK:CAMELCASE: Avoid CamelCase: #345: FILE: drivers/net/r8169/r8169_rxtx.c:68: + DescOwn_V3 = DescOwn, /* Descriptor is owned by NIC. */ CHECK:CAMELCASE: Avoid CamelCase: #346: FILE: drivers/net/r8169/r8169_rxtx.c:69: + RingEnd_V3 = RingEnd, /* End of descriptor ring */ CHECK:CAMELCASE: Avoid CamelCase: #347: FILE: drivers/net/r8169/r8169_rxtx.c:70: + FirstFrag_V3 = (1 << 25), /* First segment of a packet */ CHECK:CAMELCASE: Avoid CamelCase: #348: FILE: drivers/net/r8169/r8169_rxtx.c:71: + LastFrag_V3 = (1 << 24), /* Final segment of a packet */ CHECK:CAMELCASE: Avoid CamelCase: #352: FILE: drivers/net/r8169/r8169_rxtx.c:75: + LargeSend = (1 << 27), /* TCP Large Send Offload (TSO) */ CHECK:CAMELCASE: Avoid CamelCase: #353: FILE: drivers/net/r8169/r8169_rxtx.c:76: + GiantSendv4 = (1 << 26), /* TCP Giant Send Offload V4 (GSOv4) */ CHECK:CAMELCASE: Avoid CamelCase: #354: FILE: drivers/net/r8169/r8169_rxtx.c:77: + GiantSendv6 = (1 << 25), /* TCP Giant Send Offload V6 (GSOv6) */ CHECK:CAMELCASE: Avoid CamelCase: #355: FILE: drivers/net/r8169/r8169_rxtx.c:78: + LargeSend_DP = (1 << 16), /* TCP Large Send Offload (TSO) */ CHECK:CAMELCASE: Avoid CamelCase: #356: FILE: drivers/net/r8169/r8169_rxtx.c:79: + MSSShift = 16, /* MSS value position */ CHECK:CAMELCASE: Avoid CamelCase: #357: FILE: drivers/net/r8169/r8169_rxtx.c:80: + MSSMask = 0x7FFU, /* MSS value 11 bits */ CHECK:CAMELCASE: Avoid CamelCase: #358: FILE: drivers/net/r8169/r8169_rxtx.c:81: + TxIPCS = (1 << 18), /* Calculate IP checksum */ CHECK:CAMELCASE: Avoid CamelCase: #359: FILE: drivers/net/r8169/r8169_rxtx.c:82: + TxUDPCS = (1 << 17), /* Calculate UDP/IP checksum */ CHECK:CAMELCASE: Avoid CamelCase: #360: FILE: drivers/net/r8169/r8169_rxtx.c:83: + TxTCPCS = (1 << 16), /* Calculate TCP/IP checksum */ CHECK:CAMELCASE: Avoid CamelCase: #361: FILE: drivers/net/r8169/r8169_rxtx.c:84: + TxVlanTag = (1 << 17), /* Add VLAN tag */ CHECK:CAMELCASE: Avoid CamelCase: #364: FILE: drivers/net/r8169/r8169_rxtx.c:87: + TxUDPCS_C = (1 << 31), /* Calculate UDP/IP checksum */ CHECK:CAMELCASE: Avoid CamelCase: #365: FILE: drivers/net/r8169/r8169_rxtx.c:88: + TxTCPCS_C = (1 << 30), /* Calculate TCP/IP checksum */ CHECK:CAMELCASE: Avoid CamelCase: #366: FILE: drivers/net/r8169/r8169_rxtx.c:89: + TxIPCS_C = (1 << 29), /* Calculate IP checksum */ CHECK:CAMELCASE: Avoid CamelCase: #367: FILE: drivers/net/r8169/r8169_rxtx.c:90: + TxIPV6F_C = (1 << 28), /* Indicate it is an IPv6 packet */ CHECK:CAMELCASE: Avoid CamelCase: #375: FILE: drivers/net/r8169/r8169_rxtx.c:98: +#define RxProtoUDP PID1 CHECK:CAMELCASE: Avoid CamelCase: #376: FILE: drivers/net/r8169/r8169_rxtx.c:99: +#define RxProtoTCP PID0 CHECK:CAMELCASE: Avoid CamelCase: #377: FILE: drivers/net/r8169/r8169_rxtx.c:100: +#define RxProtoIP (PID1 | PID0) CHECK:CAMELCASE: Avoid CamelCase: #378: FILE: drivers/net/r8169/r8169_rxtx.c:101: +#define RxProtoMask RxProtoIP CHECK:CAMELCASE: Avoid CamelCase: #380: FILE: drivers/net/r8169/r8169_rxtx.c:103: + RxIPF = (1 << 16), /* IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #381: FILE: drivers/net/r8169/r8169_rxtx.c:104: + RxUDPF = (1 << 15), /* UDP/IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #382: FILE: drivers/net/r8169/r8169_rxtx.c:105: + RxTCPF = (1 << 14), /* TCP/IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #383: FILE: drivers/net/r8169/r8169_rxtx.c:106: + RxVlanTag = (1 << 16), /* VLAN tag available */ CHECK:CAMELCASE: Avoid CamelCase: #386: FILE: drivers/net/r8169/r8169_rxtx.c:109: + RxUDPT = (1 << 18), CHECK:CAMELCASE: Avoid CamelCase: #387: FILE: drivers/net/r8169/r8169_rxtx.c:110: + RxTCPT = (1 << 17), CHECK:CAMELCASE: Avoid CamelCase: #391: FILE: drivers/net/r8169/r8169_rxtx.c:114: + RxV6F = (1 << 31), CHECK:CAMELCASE: Avoid CamelCase: #392: FILE: drivers/net/r8169/r8169_rxtx.c:115: + RxV4F = (1 << 30), CHECK:CAMELCASE: Avoid CamelCase: #398: FILE: drivers/net/r8169/r8169_rxtx.c:121: +#define RxProtoUDP_v3 PID1_v3 CHECK:CAMELCASE: Avoid CamelCase: #399: FILE: drivers/net/r8169/r8169_rxtx.c:122: +#define RxProtoTCP_v3 PID0_v3 CHECK:CAMELCASE: Avoid CamelCase: #400: FILE: drivers/net/r8169/r8169_rxtx.c:123: +#define RxProtoIP_v3 (PID1_v3 | PID0_v3) CHECK:CAMELCASE: Avoid CamelCase: #401: FILE: drivers/net/r8169/r8169_rxtx.c:124: +#define RxProtoMask_v3 RxProtoIP_v3 CHECK:CAMELCASE: Avoid CamelCase: #403: FILE: drivers/net/r8169/r8169_rxtx.c:126: + RxIPF_v3 = (1 << 26), /* IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #404: FILE: drivers/net/r8169/r8169_rxtx.c:127: + RxUDPF_v3 = (1 << 25), /* UDP/IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #405: FILE: drivers/net/r8169/r8169_rxtx.c:128: + RxTCPF_v3 = (1 << 24), /* TCP/IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #406: FILE: drivers/net/r8169/r8169_rxtx.c:129: + RxSCTPF_v3 = (1 << 23), /* TCP/IP checksum failed */ CHECK:CAMELCASE: Avoid CamelCase: #407: FILE: drivers/net/r8169/r8169_rxtx.c:130: + RxVlanTag_v3 = (RxVlanTag), /* VLAN tag available */ CHECK:CAMELCASE: Avoid CamelCase: #410: FILE: drivers/net/r8169/r8169_rxtx.c:133: + RxUDPT_v3 = (1 << 29), CHECK:CAMELCASE: Avoid CamelCase: #411: FILE: drivers/net/r8169/r8169_rxtx.c:134: + RxTCPT_v3 = (1 << 28), CHECK:CAMELCASE: Avoid CamelCase: #412: FILE: drivers/net/r8169/r8169_rxtx.c:135: + RxSCTP_v3 = (1 << 27), CHECK:CAMELCASE: Avoid CamelCase: #416: FILE: drivers/net/r8169/r8169_rxtx.c:139: + RxV6F_v3 = RxV6F, CHECK:CAMELCASE: Avoid CamelCase: #417: FILE: drivers/net/r8169/r8169_rxtx.c:140: + RxV4F_v3 = RxV4F, ERROR:CODE_INDENT: code indent should use tabs where possible #457: FILE: drivers/net/r8169/r8169_rxtx.c:180: + struct rte_eth_rxq_info *qinfo)$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #457: FILE: drivers/net/r8169/r8169_rxtx.c:180: + struct rte_eth_rxq_info *qinfo)$ ERROR:CODE_INDENT: code indent should use tabs where possible #492: FILE: drivers/net/r8169/r8169_rxtx.c:215: +^I RTE_ETH_RX_OFFLOAD_UDP_CKSUM |$ ERROR:CODE_INDENT: code indent should use tabs where possible #493: FILE: drivers/net/r8169/r8169_rxtx.c:216: +^I RTE_ETH_RX_OFFLOAD_TCP_CKSUM |$ ERROR:CODE_INDENT: code indent should use tabs where possible #494: FILE: drivers/net/r8169/r8169_rxtx.c:217: +^I RTE_ETH_RX_OFFLOAD_SCATTER |$ ERROR:CODE_INDENT: code indent should use tabs where possible #495: FILE: drivers/net/r8169/r8169_rxtx.c:218: +^I RTE_ETH_RX_OFFLOAD_VLAN_STRIP;$ ERROR:CODE_INDENT: code indent should use tabs where possible #502: FILE: drivers/net/r8169/r8169_rxtx.c:225: + uint16_t nb_rx_desc, unsigned int socket_id,$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #502: FILE: drivers/net/r8169/r8169_rxtx.c:225: + uint16_t nb_rx_desc, unsigned int socket_id,$ ERROR:CODE_INDENT: code indent should use tabs where possible #503: FILE: drivers/net/r8169/r8169_rxtx.c:226: + const struct rte_eth_rxconf *rx_conf,$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #503: FILE: drivers/net/r8169/r8169_rxtx.c:226: + const struct rte_eth_rxconf *rx_conf,$ ERROR:CODE_INDENT: code indent should use tabs where possible #504: FILE: drivers/net/r8169/r8169_rxtx.c:227: + struct rte_mempool *mb_pool)$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #504: FILE: drivers/net/r8169/r8169_rxtx.c:227: + struct rte_mempool *mb_pool)$ ERROR:CODE_INDENT: code indent should use tabs where possible #515: FILE: drivers/net/r8169/r8169_rxtx.c:238: +^I^I "less than or equal to %d, "$ ERROR:CODE_INDENT: code indent should use tabs where possible #516: FILE: drivers/net/r8169/r8169_rxtx.c:239: +^I^I "greater than or equal to %d",$ ERROR:CODE_INDENT: code indent should use tabs where possible #517: FILE: drivers/net/r8169/r8169_rxtx.c:240: +^I^I RTL_MAX_RX_DESC, RTL_MIN_RX_DESC);$ ERROR:CODE_INDENT: code indent should use tabs where possible #533: FILE: drivers/net/r8169/r8169_rxtx.c:256: +^I RTE_CACHE_LINE_SIZE, socket_id);$ ERROR:CODE_INDENT: code indent should use tabs where possible #549: FILE: drivers/net/r8169/r8169_rxtx.c:272: +^I nb_rx_desc * sizeof(struct rtl_rx_entry),$ ERROR:CODE_INDENT: code indent should use tabs where possible #550: FILE: drivers/net/r8169/r8169_rxtx.c:273: +^I RTE_CACHE_LINE_SIZE, socket_id);$ ERROR:CODE_INDENT: code indent should use tabs where possible #554: FILE: drivers/net/r8169/r8169_rxtx.c:277: +^I^I "Port %d: Cannot allocate software ring for queue %d",$ ERROR:CODE_INDENT: code indent should use tabs where possible #555: FILE: drivers/net/r8169/r8169_rxtx.c:278: +^I^I rxq->port_id, rxq->queue_id);$ ERROR:CODE_INDENT: code indent should use tabs where possible #567: FILE: drivers/net/r8169/r8169_rxtx.c:290: +^I RTL_RING_ALIGN, socket_id);$ ERROR:CODE_INDENT: code indent should use tabs where possible #570: FILE: drivers/net/r8169/r8169_rxtx.c:293: +^I^I "Port %d: Cannot allocate software ring for queue %d",$ ERROR:CODE_INDENT: code indent should use tabs where possible #571: FILE: drivers/net/r8169/r8169_rxtx.c:294: +^I^I rxq->port_id, rxq->queue_id);$ ERROR:CODE_INDENT: code indent should use tabs where possible #605: FILE: drivers/net/r8169/r8169_rxtx.c:328: +^I^I^I "queue_id=%hu", rxq->queue_id);$ CHECK:CAMELCASE: Avoid CamelCase: #631: FILE: drivers/net/r8169/r8169_rxtx.c:354: + rx_config = RTL_R32(hw, RxConfig); CHECK:CAMELCASE: Avoid CamelCase: #633: FILE: drivers/net/r8169/r8169_rxtx.c:356: + rx_config |= (EnableInnerVlan | EnableOuterVlan); CHECK:CAMELCASE: Avoid CamelCase: #633: FILE: drivers/net/r8169/r8169_rxtx.c:356: + rx_config |= (EnableInnerVlan | EnableOuterVlan); CHECK:CAMELCASE: Avoid CamelCase: #639: FILE: drivers/net/r8169/r8169_rxtx.c:362: + cp_cmd = RTL_R16(hw, CPlusCmd); CHECK:CAMELCASE: Avoid CamelCase: #642: FILE: drivers/net/r8169/r8169_rxtx.c:365: + cp_cmd |= RxChkSum; CHECK:CAMELCASE: Avoid CamelCase: #658: FILE: drivers/net/r8169/r8169_rxtx.c:381: + rx_mode = AcceptBroadcast | AcceptMyPhys; CHECK:CAMELCASE: Avoid CamelCase: #658: FILE: drivers/net/r8169/r8169_rxtx.c:381: + rx_mode = AcceptBroadcast | AcceptMyPhys; CHECK:CAMELCASE: Avoid CamelCase: #678: FILE: drivers/net/r8169/r8169_rxtx.c:401: + RTL_W32(hw, RxDescAddrLow, ((u64)rxq->hw_ring_phys_addr & DMA_BIT_MASK(32))); CHECK:CAMELCASE: Avoid CamelCase: #679: FILE: drivers/net/r8169/r8169_rxtx.c:402: + RTL_W32(hw, RxDescAddrHigh, ((u64)rxq->hw_ring_phys_addr >> 32)); CHECK:CAMELCASE: Avoid CamelCase: #694: FILE: drivers/net/r8169/r8169_rxtx.c:417: + RTL_W16(hw, RxMaxSize, max_rx_pkt_size); CHECK:CAMELCASE: Avoid CamelCase: #714: FILE: drivers/net/r8169/r8169_rxtx.c:437: + RTL_W8(hw, ChipCmd, RTL_R8(hw, ChipCmd) | CmdRxEnb); CHECK:CAMELCASE: Avoid CamelCase: #714: FILE: drivers/net/r8169/r8169_rxtx.c:437: + RTL_W8(hw, ChipCmd, RTL_R8(hw, ChipCmd) | CmdRxEnb); ERROR:CODE_INDENT: code indent should use tabs where possible #731: FILE: drivers/net/r8169/r8169_rxtx.c:454: + uint32_t opts2)$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #731: FILE: drivers/net/r8169/r8169_rxtx.c:454: + uint32_t opts2)$ CHECK:CAMELCASE: Avoid CamelCase: #794: FILE: drivers/net/r8169/r8169_rxtx.c:515: + if (unlikely(opts1 & RxRES)) { ERROR:CODE_INDENT: code indent should use tabs where possible #805: FILE: drivers/net/r8169/r8169_rxtx.c:526: +^I^I^I^I "queue_id=%u",$ ERROR:CODE_INDENT: code indent should use tabs where possible #806: FILE: drivers/net/r8169/r8169_rxtx.c:527: +^I^I^I^I (uint32_t)rxq->port_id, (uint32_t)rxq->queue_id);$ CHECK:CAMELCASE: Avoid CamelCase: #875: FILE: drivers/net/r8169/r8169_rxtx.c:596: + RTL_W32(hw, ISR0_8125, (RxOK | RxErr | RxDescUnavail)); CHECK:CAMELCASE: Avoid CamelCase: #875: FILE: drivers/net/r8169/r8169_rxtx.c:596: + RTL_W32(hw, ISR0_8125, (RxOK | RxErr | RxDescUnavail)); CHECK:CAMELCASE: Avoid CamelCase: #875: FILE: drivers/net/r8169/r8169_rxtx.c:596: + RTL_W32(hw, ISR0_8125, (RxOK | RxErr | RxDescUnavail)); ERROR:CODE_INDENT: code indent should use tabs where possible #888: FILE: drivers/net/r8169/r8169_rxtx.c:609: + uint16_t nb_pkts)$ WARNING:LEADING_SPACE: please, no spaces at the start of a line #888: FILE: drivers/net/r8169/r8169_rxtx.c:609: + uint16_t nb_pkts)$ ERROR:CODE_INDENT: code indent should use tabs where possible #948: FILE: drivers/net/r8169/r8169_rxtx.c:669: +^I^I^I^I "queue_id=%u",$ ERROR:CODE_INDENT: code indent should use tabs where possible #949: FILE: drivers/net/r8169/r8169_rxtx.c:670: +^I^I^I^I (uint32_t)rxq->port_id, (uint32_t)rxq->queue_id);$ CHECK:BRACES: braces {} should be used on all arms of this statement #1021: FILE: drivers/net/r8169/r8169_rxtx.c:742: + if (data_len <= RTE_ETHER_CRC_LEN) { [...] + } else [...] WARNING:LONG_LINE: line length of 105 exceeds 100 columns #1024: FILE: drivers/net/r8169/r8169_rxtx.c:745: + last_seg->data_len = last_seg->data_len - (RTE_ETHER_CRC_LEN - data_len); CHECK:BRACES: Unbalanced braces around else statement #1026: FILE: drivers/net/r8169/r8169_rxtx.c:747: + } else total: 35 errors, 13 warnings, 69 checks, 1001 lines checked