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 6D4854554D; Tue, 2 Jul 2024 16:47:40 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 24D4240E34; Tue, 2 Jul 2024 16:46:57 +0200 (CEST) Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com [99.78.197.220]) by mails.dpdk.org (Postfix) with ESMTP id 55FA540E11 for ; Tue, 2 Jul 2024 16:46:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1719931615; x=1751467615; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=OoosfPNTEFwzvMXeeqsndONRzMpv01Sk6KImfaxOH/E=; b=kCvg3g9cVvTjW6YB3r44bHaReMXmjHSgilCZjowmkMNNHhoy/uVTCCy2 8usdLZYjx+9L9yQqxpqST3y81UHprQNdjfvIcUtpVKBTuM6STpSJXmdsp GnmvO8UUUG5xSJTy6dOR4GcGunqVcH8+rfcMqd2LlseajXw8tIF8NC+Ly I=; X-IronPort-AV: E=Sophos;i="6.09,178,1716249600"; d="scan'208";a="101515227" Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev) ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2024 14:46:52 +0000 Received: from EX19MTAEUB002.ant.amazon.com [10.0.43.254:60925] by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.1.13:2525] with esmtp (Farcaster) id a02b4dd3-66ae-4863-9965-cc352bc96f45; Tue, 2 Jul 2024 14:46:51 +0000 (UTC) X-Farcaster-Flow-ID: a02b4dd3-66ae-4863-9965-cc352bc96f45 Received: from EX19D007EUA004.ant.amazon.com (10.252.50.76) by EX19MTAEUB002.ant.amazon.com (10.252.51.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.34; Tue, 2 Jul 2024 14:46:50 +0000 Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by EX19D007EUA004.ant.amazon.com (10.252.50.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.34; Tue, 2 Jul 2024 14:46:50 +0000 Received: from HFA15-CG15235BS.amazon.com (10.85.143.173) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP Server id 15.2.1258.34 via Frontend Transport; Tue, 2 Jul 2024 14:46:48 +0000 From: To: CC: , Shai Brandes Subject: [PATCH 09/15] net/ena: logger change to improve performance Date: Tue, 2 Jul 2024 17:46:20 +0300 Message-ID: <20240702144626.14545-10-shaibran@amazon.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240702144626.14545-1-shaibran@amazon.com> References: <20240702144626.14545-1-shaibran@amazon.com> MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Shai Brandes Current implementation of ena_trc_dbg on every TX packet has a major performance impact on DPDK TX flow. Profiling revealed that these calls, which trigger rte_log usage, consume a significant amount of CPU resources. Change details: 1. Several warning prints that incorrectly used ena_trc_dbg will now be compiled out. They have been changed to ena_trc_warn to avoid compiler warnings, such as empty if/else body or unused parameter. 2. Removed variables which is used only inside prints and thus may be unreferenced. 3. calls for ena_trc_dbg will be enabled only if RTE_ETHDEV_DEBUG_TX or RTE_ETHDEV_DEBUG_RX defined Signed-off-by: Shai Brandes --- doc/guides/rel_notes/release_24_07.rst | 4 ++++ drivers/net/ena/base/ena_com.c | 19 +++++-------------- drivers/net/ena/base/ena_eth_com.c | 25 ++++++++++++------------- drivers/net/ena/base/ena_plat_dpdk.h | 6 +++++- drivers/net/ena/ena_ethdev.c | 2 +- 5 files changed, 27 insertions(+), 29 deletions(-) diff --git a/doc/guides/rel_notes/release_24_07.rst b/doc/guides/rel_notes/release_24_07.rst index e68a53d757..1e46a4b7c7 100644 --- a/doc/guides/rel_notes/release_24_07.rst +++ b/doc/guides/rel_notes/release_24_07.rst @@ -73,6 +73,10 @@ New Features ``bpf_obj_get()`` for an xskmap pinned (by the AF_XDP DP) inside the container. +* **Updated Amazon ena (Elastic Network Adapter) net driver.** + + * Reworked the driver logger usage in order to improve Tx performance. + * **Update Tap PMD driver.** * Updated to support up to 8 queues when used by secondary process. diff --git a/drivers/net/ena/base/ena_com.c b/drivers/net/ena/base/ena_com.c index e5f1a31c9e..24bad19848 100644 --- a/drivers/net/ena/base/ena_com.c +++ b/drivers/net/ena/base/ena_com.c @@ -1392,11 +1392,7 @@ int ena_com_execute_admin_command(struct ena_com_admin_queue *admin_queue, comp, comp_size); if (IS_ERR(comp_ctx)) { ret = PTR_ERR(comp_ctx); - if (ret == ENA_COM_NO_DEVICE) - ena_trc_dbg(admin_queue->ena_dev, - "Failed to submit command [%d]\n", - ret); - else + if (ret != ENA_COM_NO_DEVICE) ena_trc_err(admin_queue->ena_dev, "Failed to submit command [%d]\n", ret); @@ -1408,10 +1404,8 @@ int ena_com_execute_admin_command(struct ena_com_admin_queue *admin_queue, if (unlikely(ret)) { if (admin_queue->running_state) ena_trc_err(admin_queue->ena_dev, - "Failed to process command. ret = %d\n", ret); - else - ena_trc_dbg(admin_queue->ena_dev, - "Failed to process command. ret = %d\n", ret); + "Failed to process command [%d]\n", + ret); } return ret; } @@ -2416,7 +2410,6 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *ena_dev, void *data) struct ena_admin_aenq_entry *aenq_e; struct ena_admin_aenq_common_desc *aenq_common; struct ena_com_aenq *aenq = &ena_dev->aenq; - u64 timestamp; ena_aenq_handler handler_cb; u16 masked_head, processed = 0; u8 phase; @@ -2438,13 +2431,11 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *ena_dev, void *data) */ dma_rmb(); - timestamp = (u64)aenq_common->timestamp_low | - ((u64)aenq_common->timestamp_high << 32); - ena_trc_dbg(ena_dev, "AENQ! Group[%x] Syndrome[%x] timestamp: [%" ENA_PRIu64 "s]\n", aenq_common->group, aenq_common->syndrome, - timestamp); + ((u64)aenq_common->timestamp_low | + ((u64)aenq_common->timestamp_high << 32))); /* Handle specific event*/ handler_cb = ena_com_get_specific_aenq_cb(ena_dev, diff --git a/drivers/net/ena/base/ena_eth_com.c b/drivers/net/ena/base/ena_eth_com.c index 29cc331b1b..90dd85c7ff 100644 --- a/drivers/net/ena/base/ena_eth_com.c +++ b/drivers/net/ena/base/ena_eth_com.c @@ -426,8 +426,7 @@ static int ena_com_create_and_store_tx_meta_desc(struct ena_com_io_sq *io_sq, return ENA_COM_OK; } -static void ena_com_rx_set_flags(struct ena_com_io_cq *io_cq, - struct ena_com_rx_ctx *ena_rx_ctx, +static void ena_com_rx_set_flags(struct ena_com_rx_ctx *ena_rx_ctx, struct ena_eth_io_rx_cdesc_base *cdesc) { ena_rx_ctx->l3_proto = cdesc->status & @@ -453,16 +452,6 @@ static void ena_com_rx_set_flags(struct ena_com_io_cq *io_cq, ENA_FIELD_GET(cdesc->status, ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_MASK, ENA_ETH_IO_RX_CDESC_BASE_IPV4_FRAG_SHIFT); - - ena_trc_dbg(ena_com_io_cq_to_ena_dev(io_cq), - "l3_proto %d l4_proto %d l3_csum_err %d l4_csum_err %d hash %u frag %d cdesc_status %x\n", - ena_rx_ctx->l3_proto, - ena_rx_ctx->l4_proto, - ena_rx_ctx->l3_csum_err, - ena_rx_ctx->l4_csum_err, - ena_rx_ctx->hash, - ena_rx_ctx->frag, - cdesc->status); } /*****************************************************************************/ @@ -689,7 +678,17 @@ int ena_com_rx_pkt(struct ena_com_io_cq *io_cq, io_sq->qid, io_sq->next_to_comp); /* Get rx flags from the last pkt */ - ena_com_rx_set_flags(io_cq, ena_rx_ctx, cdesc); + ena_com_rx_set_flags(ena_rx_ctx, cdesc); + + ena_trc_dbg(ena_com_io_cq_to_ena_dev(io_cq), + "l3_proto %d l4_proto %d l3_csum_err %d l4_csum_err %d hash %d frag %d cdesc_status %x\n", + ena_rx_ctx->l3_proto, + ena_rx_ctx->l4_proto, + ena_rx_ctx->l3_csum_err, + ena_rx_ctx->l4_csum_err, + ena_rx_ctx->hash, + ena_rx_ctx->frag, + cdesc->status); ena_rx_ctx->descs = nb_hw_desc; diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h index 03f29a2f1d..21b96113c7 100644 --- a/drivers/net/ena/base/ena_plat_dpdk.h +++ b/drivers/net/ena/base/ena_plat_dpdk.h @@ -122,7 +122,11 @@ extern int ena_logtype_com; "[ENA_COM: %s]" fmt, __func__, ##arg) \ ) -#define ena_trc_dbg(dev, format, arg...) ena_trc_log(dev, DEBUG, format, ##arg) +#if (defined RTE_ETHDEV_DEBUG_TX) || (defined RTE_ETHDEV_DEBUG_RX) +#define ena_trc_dbg(dev, format, ...) ena_trc_log(dev, DEBUG, format, ##__VA_ARGS__) +#else +#define ena_trc_dbg(dev, format, ...) +#endif #define ena_trc_info(dev, format, arg...) ena_trc_log(dev, INFO, format, ##arg) #define ena_trc_warn(dev, format, arg...) ena_trc_log(dev, WARNING, format, ##arg) #define ena_trc_err(dev, format, arg...) ena_trc_log(dev, ERR, format, ##arg) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index 66fc287faf..56dbe3b9cd 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -3124,7 +3124,7 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf) */ if (!ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq, mbuf->nb_segs + 2)) { - PMD_DRV_LOG(DEBUG, "Not enough space in the tx queue\n"); + PMD_TX_LOG(DEBUG, "Not enough space in the tx queue\n"); return ENA_COM_NO_MEM; } -- 2.17.1