From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f170.google.com (mail-pf0-f170.google.com [209.85.192.170]) by dpdk.org (Postfix) with ESMTP id B1B07688E for ; Mon, 22 Feb 2016 22:08:24 +0100 (CET) Received: by mail-pf0-f170.google.com with SMTP id c10so102003642pfc.2 for ; Mon, 22 Feb 2016 13:08:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=SGzJvybhVYGFMB08iN3S58/BuRcKvY1ye0lYswk2RfY=; b=c2Ee+Qf0RIiv1kmaZhmfrfu0dduQ4pllMw0wrlI457tXpUHctmkaH24VbhFSZpXs/C tEm/Xb1Z/cR+6XDDGRR+xf+HXKTgZAQwOqyvyhJ/rgjFMYVLCsKapc5k9oCQxy+n0xUQ ylYsqEAh+X+LwrbH/LWhZRo2uEJ/zfR829Ja5UbXEB8/xqZujNHs10GmaN2r3itX7h53 3coJDkIelFsDaALnwT1+g9QEH8HTy+h972gRKGaLkc8oOF1K4euLS69zpZqPjx7t8m0d q/Ss/BI4BfknHNnBKIoVvntKt+/WkXBOgdd6A0wcVus0/R10Ax2E/NLB5UBZy2pY6WNE lJ5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=SGzJvybhVYGFMB08iN3S58/BuRcKvY1ye0lYswk2RfY=; b=X/XPQ1wtFQfkyHBY535w+ZhdFodcbwDOvR2sbvpuGsRHUIsAKXiMVnXF10gIzbGYtS dA8Vh2USA/sa0ELi8wY2qo00wv29i1j5SDMtqdgyR177SUql/2rQlcibAv0stO8HpBS2 2HaDGVdH9AhqxBaNgOvCSQUOvsSG6UueYKbWwTdGBAs2vy8TedGxETwfZYjkp+LLPpoR Op202dhrGizm5qfBqqt7YvEl6bYy92Ipv2AANBBjsq64A6iRf/57XZKWa6n1oSSGWTaI RBaqkkymRM16KukXmnXJF5Yu0Ysr5f1RsCwyshLAYIdXXb6HbsxlIWspMjACamywGcdi 4nCg== X-Gm-Message-State: AG10YOQyWN2LekSechoFzs5uvFvol7mAdeXzwEqkqHidsJfB407lyBPiGm5siNdckN1K4Q== X-Received: by 10.98.42.8 with SMTP id q8mr40756297pfq.13.1456175303983; Mon, 22 Feb 2016 13:08:23 -0800 (PST) Received: from xeon-e3 (static-50-53-82-155.bvtn.or.frontiernet.net. [50.53.82.155]) by smtp.gmail.com with ESMTPSA id r62sm38966408pfr.26.2016.02.22.13.08.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Feb 2016 13:08:23 -0800 (PST) Date: Mon, 22 Feb 2016 13:07:47 -0800 From: Stephen Hemminger To: Jan Medala Message-ID: <20160222130747.4843fc2f@xeon-e3> In-Reply-To: <1456169211-18867-1-git-send-email-jan@semihalf.com> References: <1456169211-18867-1-git-send-email-jan@semihalf.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, matua@amazon.com Subject: Re: [dpdk-dev] [PATCH v3 0/4] DPDK polling-mode driver for Amazon Elastic Network Adapters (ENA) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2016 21:08:25 -0000 On Mon, 22 Feb 2016 20:26:47 +0100 Jan Medala wrote: > This drop includes additional features for Amazon ENA: > * Low Latenycy Queue (LLQ) for Tx > * RSS > > All previous comments are resolved. > > Jan Medala (4): > ena: Amazon ENA documentation > ena: Amazon ENA communication layer > ena: Amazon ENA communication layer for DPDK platform > ena: DPDK polling-mode driver for Amazon Elastic Network Adapters > (ENA) > > config/common_linuxapp | 11 + > doc/guides/nics/ena.rst | 238 ++ > drivers/net/Makefile | 1 + > drivers/net/ena/Makefile | 62 + > drivers/net/ena/base/ena_com.c | 2750 ++++++++++++++++++++ > drivers/net/ena/base/ena_com.h | 1038 ++++++++ > drivers/net/ena/base/ena_defs/ena_admin_defs.h | 1714 ++++++++++++ > .../net/ena/base/ena_defs/ena_admin_defs_custom.h | 40 + > drivers/net/ena/base/ena_defs/ena_common_defs.h | 54 + > drivers/net/ena/base/ena_defs/ena_eth_io_defs.h | 1143 ++++++++ > drivers/net/ena/base/ena_defs/ena_gen_info.h | 35 + > drivers/net/ena/base/ena_defs/ena_includes.h | 39 + > drivers/net/ena/base/ena_defs/ena_regs_defs.h | 326 +++ > drivers/net/ena/base/ena_eth_com.c | 506 ++++ > drivers/net/ena/base/ena_eth_com.h | 154 ++ > drivers/net/ena/base/ena_plat.h | 51 + > drivers/net/ena/base/ena_plat_dpdk.h | 212 ++ > drivers/net/ena/ena_ethdev.c | 1327 ++++++++++ > drivers/net/ena/ena_ethdev.h | 155 ++ > drivers/net/ena/ena_logs.h | 76 + > drivers/net/ena/ena_platform.h | 58 + > mk/rte.app.mk | 1 + > 22 files changed, 9991 insertions(+) > create mode 100644 doc/guides/nics/ena.rst > create mode 100755 drivers/net/ena/Makefile > create mode 100644 drivers/net/ena/base/ena_com.c > create mode 100644 drivers/net/ena/base/ena_com.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_admin_defs.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_admin_defs_custom.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_common_defs.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_eth_io_defs.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_gen_info.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_includes.h > create mode 100644 drivers/net/ena/base/ena_defs/ena_regs_defs.h > create mode 100644 drivers/net/ena/base/ena_eth_com.c > create mode 100644 drivers/net/ena/base/ena_eth_com.h > create mode 100644 drivers/net/ena/base/ena_plat.h > create mode 100644 drivers/net/ena/base/ena_plat_dpdk.h > create mode 100644 drivers/net/ena/ena_ethdev.c > create mode 100755 drivers/net/ena/ena_ethdev.h > create mode 100644 drivers/net/ena/ena_logs.h > create mode 100644 drivers/net/ena/ena_platform.h > I still see lots of style issues reported by running checkpatch (from Linux kernel) with some of the standard DPDKism's suppressed. CHECK: spaces preferred around that '/' (ctx:VxV) #54: FILE: drivers/net/ena/ena_ethdev.c:54: +#define ENA_IO_RXQ_IDX_REV(q) ((q - 1)/2) /*reverse version of ENA_IO_RXQ_IDX*/ ^ CHECK: 'desciptors' may be misspelled - perhaps 'descriptors'? #59: FILE: drivers/net/ena/ena_ethdev.c:59: +/* While processing submitted and completed desciptors (rx and tx path ERROR: space prohibited before that close parenthesis ')' #67: FILE: drivers/net/ena/ena_ethdev.c:67: +#define __MERGE_64B_H_L(h, l) (((long)h << 32) | l ) WARNING: space prohibited before semicolon #115: FILE: drivers/net/ena/ena_ethdev.c:115: +static int ena_queue_restart(struct ena_ring *ring) ; WARNING: braces {} are not necessary for any arm of this statement #149: FILE: drivers/net/ena/ena_ethdev.c:149: + if (ena_rx_ctx->l4_proto == ENA_ETH_IO_L4_PROTO_TCP) { [...] + } else if (ena_rx_ctx->l4_proto == ENA_ETH_IO_L4_PROTO_UDP) { [...] WARNING: braces {} are not necessary for any arm of this statement #155: FILE: drivers/net/ena/ena_ethdev.c:155: + if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV4) { [...] + } else if (ena_rx_ctx->l3_proto == ENA_ETH_IO_L3_PROTO_IPV6) { [...] WARNING: void function return statements are not generally useful #169: FILE: drivers/net/ena/ena_ethdev.c:169: + return; +} CHECK: Alignment should match open parenthesis #177: FILE: drivers/net/ena/ena_ethdev.c:177: + if (mbuf->ol_flags & (PKT_TX_L4_MASK || PKT_TX_IP_CKSUM || + PKT_TX_TCP_SEG)) { CHECK: Blank lines aren't necessary after an open brace '{' #178: FILE: drivers/net/ena/ena_ethdev.c:178: + PKT_TX_TCP_SEG)) { + WARNING: line over 100 characters #184: FILE: drivers/net/ena/ena_ethdev.c:184: + mbuf->l3_len + mbuf->l2_len)->data_off) >> 4); CHECK: Alignment should match open parenthesis #198: FILE: drivers/net/ena/ena_ethdev.c:198: + if (mbuf->packet_type & (RTE_PTYPE_L4_NONFRAG || + RTE_PTYPE_INNER_L4_NONFRAG)) WARNING: void function return statements are not generally useful #231: FILE: drivers/net/ena/ena_ethdev.c:231: + return; +} ERROR: "(foo*)" should be "(foo *)" #235: FILE: drivers/net/ena/ena_ethdev.c:235: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); WARNING: void function return statements are not generally useful #243: FILE: drivers/net/ena/ena_ethdev.c:243: + return; +} ERROR: "(foo*)" should be "(foo *)" #249: FILE: drivers/net/ena/ena_ethdev.c:249: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); WARNING: braces {} are not necessary for single statement blocks #256: FILE: drivers/net/ena/ena_ethdev.c:256: + if ((reta_size == 0) || (reta_conf == NULL)) { + return -EINVAL; + } WARNING: line over 100 characters #261: FILE: drivers/net/ena/ena_ethdev.c:261: + RTE_LOG(WARNING, PMD, "indirection table supplied (%d) is bigger than supported (%d)\n", CHECK: Alignment should match open parenthesis #262: FILE: drivers/net/ena/ena_ethdev.c:262: + RTE_LOG(WARNING, PMD, "indirection table supplied (%d) is bigger than supported (%d)\n", + reta_size, ENA_RX_RSS_TABLE_SIZE); ERROR: "(foo*)" should be "(foo *)" #300: FILE: drivers/net/ena/ena_ethdev.c:300: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); CHECK: Alignment should match open parenthesis #309: FILE: drivers/net/ena/ena_ethdev.c:309: + if (reta_size == 0 || reta_conf == NULL || + (reta_size > RTE_RETA_GROUP_SIZE && ((reta_conf + 1) == NULL))) { WARNING: braces {} are not necessary for single statement blocks #323: FILE: drivers/net/ena/ena_ethdev.c:323: + if (TEST_BIT(reta_conf[reta_conf_idx].mask, reta_idx)) { + reta_conf[reta_conf_idx].reta[reta_idx] = ENA_IO_RXQ_IDX_REV(indirect_table[i]); + } WARNING: line over 100 characters #324: FILE: drivers/net/ena/ena_ethdev.c:324: + reta_conf[reta_conf_idx].reta[reta_idx] = ENA_IO_RXQ_IDX_REV(indirect_table[i]); CHECK: Alignment should match open parenthesis #347: FILE: drivers/net/ena/ena_ethdev.c:347: + rc = ena_com_indirect_table_fill_entry(ena_dev, i, + ENA_IO_RXQ_IDX(val)); ERROR: "(foo**)" should be "(foo **)" #386: FILE: drivers/net/ena/ena_ethdev.c:386: + struct ena_ring **queues = (struct ena_ring**)dev->data->rx_queues; WARNING: void function return statements are not generally useful #394: FILE: drivers/net/ena/ena_ethdev.c:394: + return; +} ERROR: "(foo**)" should be "(foo **)" #398: FILE: drivers/net/ena/ena_ethdev.c:398: + struct ena_ring **queues = (struct ena_ring**)dev->data->tx_queues; WARNING: void function return statements are not generally useful #406: FILE: drivers/net/ena/ena_ethdev.c:406: + return; +} ERROR: "(foo*)" should be "(foo *)" #410: FILE: drivers/net/ena/ena_ethdev.c:410: + struct ena_ring *ring = (struct ena_ring*)queue; WARNING: quoted string split across lines #415: FILE: drivers/net/ena/ena_ethdev.c:415: + ena_assert_msg(ring->configured, "API violation. " + "Trying to release not configured queue"); CHECK: 'RUNING' may be misspelled - perhaps 'RUNNING'? #416: FILE: drivers/net/ena/ena_ethdev.c:416: + ena_assert_msg(ring->adapter->state != ENA_ADAPTER_STATE_RUNING, WARNING: unnecessary whitespace before a quoted newline #433: FILE: drivers/net/ena/ena_ethdev.c:433: + RTE_LOG(NOTICE, PMD, "RX Queue %d:%d released \n", ring->port_id, ring->id); WARNING: void function return statements are not generally useful #435: FILE: drivers/net/ena/ena_ethdev.c:435: + return; +} CHECK: No space is necessary after a cast #439: FILE: drivers/net/ena/ena_ethdev.c:439: + struct ena_ring *ring = (struct ena_ring*) queue; ERROR: "(foo*)" should be "(foo *)" #439: FILE: drivers/net/ena/ena_ethdev.c:439: + struct ena_ring *ring = (struct ena_ring*) queue; WARNING: quoted string split across lines #444: FILE: drivers/net/ena/ena_ethdev.c:444: + ena_assert_msg(ring->configured, "API violation. Trying to release " + "not configured queue"); CHECK: 'RUNING' may be misspelled - perhaps 'RUNNING'? #445: FILE: drivers/net/ena/ena_ethdev.c:445: + ena_assert_msg(ring->adapter->state != ENA_ADAPTER_STATE_RUNING, WARNING: unnecessary whitespace before a quoted newline #467: FILE: drivers/net/ena/ena_ethdev.c:467: + RTE_LOG(NOTICE, PMD, "TX Queue %d:%d released \n", ring->port_id, ring->id); WARNING: void function return statements are not generally useful #469: FILE: drivers/net/ena/ena_ethdev.c:469: + return; +} WARNING: void function return statements are not generally useful #485: FILE: drivers/net/ena/ena_ethdev.c:485: + return; +} ERROR: "foo* bar" should be "foo *bar" #492: FILE: drivers/net/ena/ena_ethdev.c:492: + struct ena_tx_buffer* tx_buf = WARNING: void function return statements are not generally useful #502: FILE: drivers/net/ena/ena_ethdev.c:502: + return; +} ERROR: "(foo*)" should be "(foo *)" #518: FILE: drivers/net/ena/ena_ethdev.c:518: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); CHECK: Blank lines aren't necessary after an open brace '{' #550: FILE: drivers/net/ena/ena_ethdev.c:550: +{ + WARNING: Missing a blank line after declarations #552: FILE: drivers/net/ena/ena_ethdev.c:552: + uint32_t max_frame_len = adapter->max_mtu; + if (adapter->rte_eth_dev_data->dev_conf.rxmode.jumbo_frame == 1) CHECK: Blank lines aren't necessary before a close brace '}' #569: FILE: drivers/net/ena/ena_ethdev.c:569: + +} ERROR: "(foo*)" should be "(foo *)" #573: FILE: drivers/net/ena/ena_ethdev.c:573: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); WARNING: Missing a blank line after declarations #574: FILE: drivers/net/ena/ena_ethdev.c:574: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); + rte_atomic64_init(&adapter->drv_stats->ierrors); ERROR: "(foo*)" should be "(foo *)" #583: FILE: drivers/net/ena/ena_ethdev.c:583: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); ERROR: "(foo*)" should be "(foo *)" #619: FILE: drivers/net/ena/ena_ethdev.c:619: + adapter = (struct ena_adapter*)(dev->data->dev_private); ERROR: "(foo*)" should be "(foo *)" #643: FILE: drivers/net/ena/ena_ethdev.c:643: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); ERROR: space required before the open parenthesis '(' #646: FILE: drivers/net/ena/ena_ethdev.c:646: + if(!(adapter->state == ENA_ADAPTER_STATE_CONFIG || CHECK: 'RUNING' may be misspelled - perhaps 'RUNNING'? #672: FILE: drivers/net/ena/ena_ethdev.c:672: + adapter->state = ENA_ADAPTER_STATE_RUNING; ERROR: "(foo*)" should be "(foo *)" #706: FILE: drivers/net/ena/ena_ethdev.c:706: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); WARNING: quoted string split across lines #728: FILE: drivers/net/ena/ena_ethdev.c:728: + RTE_LOG(ERR, PMD, "failed to create io TX queue #%d (ena_qid: %d)" + "rc: %d\n", queue_idx, ena_qid, rc); ERROR: "(foo*)" should be "(foo *)" #770: FILE: drivers/net/ena/ena_ethdev.c:770: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); ERROR: "(foo*)" should be "(foo *)" #802: FILE: drivers/net/ena/ena_ethdev.c:802: + sizeof(struct rte_mbuf*) * nb_desc, RTE_CACHE_LINE_SIZE); ERROR: "foo ** bar" should be "foo **bar" #822: FILE: drivers/net/ena/ena_ethdev.c:822: + struct rte_mbuf ** mbufs = &rxq->rx_buffer_info[0]; ERROR: trailing statements should be on next line #824: FILE: drivers/net/ena/ena_ethdev.c:824: + if (unlikely(!count)) return 0; ERROR: space required after that ',' (ctx:VxV) #836: FILE: drivers/net/ena/ena_ethdev.c:836: + PMD_RX_LOG(DEBUG,"there are no enough free buffers"); ^ WARNING: Block comments use a trailing */ on a separate line #902: FILE: drivers/net/ena/ena_ethdev.c:902: + * information */ ERROR: "(foo*)" should be "(foo *)" #926: FILE: drivers/net/ena/ena_ethdev.c:926: + struct ena_adapter *adapter = (struct ena_adapter*)(eth_dev->data->dev_private); ERROR: do not initialise statics to 0 #931: FILE: drivers/net/ena/ena_ethdev.c:931: + static int adapters_found = 0; WARNING: braces {} are not necessary for single statement blocks #942: FILE: drivers/net/ena/ena_ethdev.c:942: + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + return 0; + } CHECK: Alignment should match open parenthesis #980: FILE: drivers/net/ena/ena_ethdev.c:980: + PMD_INIT_LOG(ERR, + "Trying to use LLQ but llq_num is 0. Fall back into regular queues\n"); ERROR: "(foo*)" should be "(foo *)" #997: FILE: drivers/net/ena/ena_ethdev.c:997: + eth_dev->data->mac_addrs = (struct ether_addr*)adapter->mac_addr; CHECK: Blank lines aren't necessary after an open brace '{' #1017: FILE: drivers/net/ena/ena_ethdev.c:1017: +{ + ERROR: "(foo*)" should be "(foo *)" #1018: FILE: drivers/net/ena/ena_ethdev.c:1018: + struct ena_adapter *adapter = (struct ena_adapter*)(dev->data->dev_private); WARNING: Missing a blank line after declarations #1046: FILE: drivers/net/ena/ena_ethdev.c:1046: + struct ena_ring *ring = &adapter->tx_ring[i]; + ring->configured = 0; CHECK: Blank lines aren't necessary before a close brace '}' #1052: FILE: drivers/net/ena/ena_ethdev.c:1052: + + } WARNING: Missing a blank line after declarations #1056: FILE: drivers/net/ena/ena_ethdev.c:1056: + struct ena_ring *ring = &adapter->rx_ring[i]; + ring->configured = 0; ERROR: "(foo*)" should be "(foo *)" #1074: FILE: drivers/net/ena/ena_ethdev.c:1074: + adapter = (struct ena_adapter*)(dev->data->dev_private); ERROR: "(foo*)" should be "(foo *)" #1114: FILE: drivers/net/ena/ena_ethdev.c:1114: + struct ena_ring *rx_ring = (struct ena_ring*)(rx_queue); CHECK: 'RUNING' may be misspelled - perhaps 'RUNNING'? #1130: FILE: drivers/net/ena/ena_ethdev.c:1130: + if (unlikely(rx_ring->adapter->state != ENA_ADAPTER_STATE_RUNING)) { ERROR: trailing statements should be on next line #1137: FILE: drivers/net/ena/ena_ethdev.c:1137: + if (unlikely(nb_pkts > desc_in_use)) nb_pkts = desc_in_use; WARNING: unnecessary whitespace before a quoted newline #1147: FILE: drivers/net/ena/ena_ethdev.c:1147: + RTE_LOG(ERR, PMD, "ena_com_rx_pkt error %d \n", rc); WARNING: Missing a blank line after declarations #1155: FILE: drivers/net/ena/ena_ethdev.c:1155: + int segments = 0; + while (segments < ena_rx_ctx.descs) { ERROR: "(foo*)" should be "(foo *)" #1198: FILE: drivers/net/ena/ena_ethdev.c:1198: + struct ena_ring *tx_ring = (struct ena_ring*)(tx_queue); CHECK: 'RUNING' may be misspelled - perhaps 'RUNNING'? #1211: FILE: drivers/net/ena/ena_ethdev.c:1211: + if (unlikely(tx_ring->adapter->state != ENA_ADAPTER_STATE_RUNING)) { CHECK: Blank lines aren't necessary after an open brace '{' #1218: FILE: drivers/net/ena/ena_ethdev.c:1218: + for (sent_idx = 0; sent_idx < nb_pkts; sent_idx++) { + ERROR: "(foo*)" should be "(foo *)" #1235: FILE: drivers/net/ena/ena_ethdev.c:1235: + ena_tx_ctx.push_header = (void *)((char*)(mbuf->buf_addr) + mbuf->data_off); CHECK: spaces preferred around that '|' (ctx:VxV) #1241: FILE: drivers/net/ena/ena_ethdev.c:1241: + if (unlikely(mbuf->ol_flags & (PKT_RX_L4_CKSUM_BAD|PKT_RX_IP_CKSUM_BAD))) { ^ WARNING: braces {} are not necessary for single statement blocks #1241: FILE: drivers/net/ena/ena_ethdev.c:1241: + if (unlikely(mbuf->ol_flags & (PKT_RX_L4_CKSUM_BAD|PKT_RX_IP_CKSUM_BAD))) { + rte_atomic64_inc(&tx_ring->adapter->drv_stats->ierrors); + } ERROR: space required before the open parenthesis '(' #1255: FILE: drivers/net/ena/ena_ethdev.c:1255: + while((mbuf = mbuf->next) != NULL) { total: 31 errors, 31 warnings, 21 checks, 1327 lines checked drivers/net/ena/ena_ethdev.c has style problems, please review. NOTE: Ignored message types: BIT_MACRO COMPARISON_TO_NULL PREFER_KERNEL_TYPES NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.