get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/96239/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 96239,
    "url": "http://patchwork.dpdk.org/api/patches/96239/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20210723102454.12206-3-mk@semihalf.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210723102454.12206-3-mk@semihalf.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210723102454.12206-3-mk@semihalf.com",
    "date": "2021-07-23T10:24:50",
    "name": "[v4,2/6] net/ena: make use of the IO debug build option",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "3a4d257673c2f8023efd13839d9811d13a29ca9c",
    "submitter": {
        "id": 786,
        "url": "http://patchwork.dpdk.org/api/people/786/?format=api",
        "name": "Michal Krawczyk",
        "email": "mk@semihalf.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20210723102454.12206-3-mk@semihalf.com/mbox/",
    "series": [
        {
            "id": 17968,
            "url": "http://patchwork.dpdk.org/api/series/17968/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=17968",
            "date": "2021-07-23T10:24:48",
            "name": "net/ena: v2.4.0 driver update",
            "version": 4,
            "mbox": "http://patchwork.dpdk.org/series/17968/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/96239/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/96239/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 21711A0C46;\n\tFri, 23 Jul 2021 12:26:51 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 029B4410DD;\n\tFri, 23 Jul 2021 12:26:43 +0200 (CEST)",
            "from mail-ej1-f54.google.com (mail-ej1-f54.google.com\n [209.85.218.54]) by mails.dpdk.org (Postfix) with ESMTP id 7F05E40DDA\n for <dev@dpdk.org>; Fri, 23 Jul 2021 12:26:39 +0200 (CEST)",
            "by mail-ej1-f54.google.com with SMTP id gn11so3101224ejc.0\n for <dev@dpdk.org>; Fri, 23 Jul 2021 03:26:39 -0700 (PDT)",
            "from DESKTOP-U5LNN3J.localdomain\n (093105178068.dynamic-ww-01.vectranet.pl. [93.105.178.68])\n by smtp.gmail.com with ESMTPSA id jp26sm10506142ejb.28.2021.07.23.03.26.37\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 23 Jul 2021 03:26:38 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=semihalf-com.20150623.gappssmtp.com; s=20150623;\n h=from:to:cc:subject:date:message-id:in-reply-to:references\n :mime-version:content-transfer-encoding;\n bh=oSyKftVlPDWJqRgjIh/i51Zcoc8WZWUiZqcESSncvlE=;\n b=jUo3BkaaloTdCHABZbLj/4w7ZZM8R09kTPEji7VIKRjbU50gRhSBon9DO0nl/cibmT\n zYiXvUl45T5nW0MMGwqWlNFi9ukgOut/QqymtWSi0ChTAHf7wT1XPVwxlWX61Ev31ans\n PG5d5QK2QDJutbVlfoNitMmwWFnt2uNMyZZTY6mWQTVYXd4nwcVJPT9QGZsmuttFqvJM\n iJnuKzwU1N4yPMP9fdy4htp4MwDPcVGNlBnWWWvDGUwPNNeB/HVqtxK0SOCX0UjosCv6\n ZMtxLZpNrzem1RgpQVEvyLKrKT21SDms5hRwYKZVUylMny3rubdMtYhTIW6OAk24+OVR\n Zf9Q==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20161025;\n h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n :references:mime-version:content-transfer-encoding;\n bh=oSyKftVlPDWJqRgjIh/i51Zcoc8WZWUiZqcESSncvlE=;\n b=JMyysicIS2+oolC4niG7FoPsDDxq7vQy/tJ2x6KD9rquiTaFLrAOORXnvfVEtSseTQ\n fwgUc5xOlkRKW82kaQElpdPZJuqej9FylCPFoa0NUQf0widQlbVREx7Dpi2igTgAFY9f\n 4NZwcS4TH72evM2XL3OlkNbDFf/ieRnDHZYF2Eiv24LZWnWPnyOFLrq24wVhNUxpQrbx\n ZcLykci8Bc00LpvhVqbkUU1NeFJy3DCub2INQGbolJz33DdRc7UMuB51VLqx6JaIbEK6\n vOb+D516QGOORebOr3IfT62Ljr8ti1lgmenBPeVSW1wrh+qJ1kMoN6lBekRTPdAltdA3\n Tvmw==",
        "X-Gm-Message-State": "AOAM530asycEECA/82g7wvLiwzqO2SivdcjDH04ga58+YeVLtfePX7q/\n AzxX2xNcxu1DVk1tcaRobhddoPbf5cu7AY4q",
        "X-Google-Smtp-Source": "\n ABdhPJx1pq68GSWn6cOqXa61vvKLLsHFnEI6ZzIMDTzB2Bcnah9TExRV+p/O9VvDc82bA4nChT2OaA==",
        "X-Received": "by 2002:a17:906:b0c8:: with SMTP id\n bk8mr4032296ejb.412.1627035998964;\n Fri, 23 Jul 2021 03:26:38 -0700 (PDT)",
        "From": "Michal Krawczyk <mk@semihalf.com>",
        "To": "dev@dpdk.org",
        "Cc": "ndagan@amazon.com, shaibran@amazon.com, upstream@semihalf.com,\n Michal Krawczyk <mk@semihalf.com>, Igor Chauskin <igorch@amazon.com>",
        "Date": "Fri, 23 Jul 2021 12:24:50 +0200",
        "Message-Id": "<20210723102454.12206-3-mk@semihalf.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20210723102454.12206-1-mk@semihalf.com>",
        "References": "<20210714104320.4096-1-mk@semihalf.com>\n <20210723102454.12206-1-mk@semihalf.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v4 2/6] net/ena: make use of the IO debug build\n option",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "ENA defined its own logger flags for Tx and Rx, but they weren't\ntechnically used anywhere. Those data path loggers weren't used anywhere\nafter the definition.\n\nThis commit uses the generic RTE_ETHDEV_DEBUG_RX and RTE_ETHDEV_DEBUG_TX\nflags to define PMD_TX_LOG and PMD_RX_LOG which are now being used on\nthe data path. The PMD_TX_FREE_LOG was removed, as it has no usage in\nthe current version of the driver.\n\nRTE_ETH_DEBUG_[TR]X now wraps extra checks for the driver state in the\nIO path - this saves extra conditionals on the hot path.\n\nena_com logger is no longer optional (previously it had to be explicitly\nenabled by defining this flag: RTE_LIBRTE_ENA_COM_DEBUG). Having this\nlogger optional makes tracing of ena_com errors much harder.\nDue to ena_com design, it's impossible to separate IO path logs\nfrom the management path logs, so for now they will be always enabled.\n\nDefault levels for the affected loggers were modified. Hot path loggers\nare initialized with the default level of DEBUG instead of NOTICE, as\nthey have to be explicitly enabled. ena_com logging level was reduced\nfrom NOTICE to WARNING - as it's no longer optional, the driver should\nreport just a warnings in the ena_com layer.\n\nSigned-off-by: Michal Krawczyk <mk@semihalf.com>\nReviewed-by: Igor Chauskin <igorch@amazon.com>\nReviewed-by: Shai Brandes <shaibran@amazon.com>\n---\n drivers/net/ena/base/ena_plat_dpdk.h |  7 ----\n drivers/net/ena/ena_ethdev.c         | 52 +++++++++++++++-------------\n drivers/net/ena/ena_logs.h           | 13 ++-----\n 3 files changed, 30 insertions(+), 42 deletions(-)",
    "diff": "diff --git a/drivers/net/ena/base/ena_plat_dpdk.h b/drivers/net/ena/base/ena_plat_dpdk.h\nindex f66df95591..4e7f52881a 100644\n--- a/drivers/net/ena/base/ena_plat_dpdk.h\n+++ b/drivers/net/ena/base/ena_plat_dpdk.h\n@@ -108,7 +108,6 @@ extern int ena_logtype_com;\n #define GENMASK_ULL(h, l) (((~0ULL) - (1ULL << (l)) + 1) &\t\t       \\\n \t\t\t  (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))\n \n-#ifdef RTE_LIBRTE_ENA_COM_DEBUG\n #define ena_trc_log(dev, level, fmt, arg...)\t\t\t\t       \\\n \t(\t\t\t\t\t\t\t\t       \\\n \t\tENA_TOUCH(dev),\t\t\t\t\t\t       \\\n@@ -121,12 +120,6 @@ extern int ena_logtype_com;\n #define ena_trc_warn(dev, format, arg...)\t\t\t\t       \\\n \tena_trc_log(dev, WARNING, format, ##arg)\n #define ena_trc_err(dev, format, arg...) ena_trc_log(dev, ERR, format, ##arg)\n-#else\n-#define ena_trc_dbg(dev, format, arg...) ENA_TOUCH(dev)\n-#define ena_trc_info(dev, format, arg...) ENA_TOUCH(dev)\n-#define ena_trc_warn(dev, format, arg...) ENA_TOUCH(dev)\n-#define ena_trc_err(dev, format, arg...) ENA_TOUCH(dev)\n-#endif /* RTE_LIBRTE_ENA_COM_DEBUG */\n \n #define ENA_WARN(cond, dev, format, arg...)\t\t\t\t       \\\n \tdo {\t\t\t\t\t\t\t\t       \\\ndiff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c\nindex f5e812d507..2335436b6c 100644\n--- a/drivers/net/ena/ena_ethdev.c\n+++ b/drivers/net/ena/ena_ethdev.c\n@@ -399,9 +399,9 @@ static int validate_tx_req_id(struct ena_ring *tx_ring, u16 req_id)\n \t}\n \n \tif (tx_info)\n-\t\tPMD_DRV_LOG(ERR, \"tx_info doesn't have valid mbuf\\n\");\n+\t\tPMD_TX_LOG(ERR, \"tx_info doesn't have valid mbuf\\n\");\n \telse\n-\t\tPMD_DRV_LOG(ERR, \"Invalid req_id: %hu\\n\", req_id);\n+\t\tPMD_TX_LOG(ERR, \"Invalid req_id: %hu\\n\", req_id);\n \n \t/* Trigger device reset */\n \t++tx_ring->tx_stats.bad_req_id;\n@@ -1461,7 +1461,7 @@ static int ena_add_single_rx_desc(struct ena_com_io_sq *io_sq,\n \t/* pass resource to device */\n \trc = ena_com_add_single_rx_desc(io_sq, &ebuf, id);\n \tif (unlikely(rc != 0))\n-\t\tPMD_DRV_LOG(WARNING, \"Failed adding Rx desc\\n\");\n+\t\tPMD_RX_LOG(WARNING, \"Failed adding Rx desc\\n\");\n \n \treturn rc;\n }\n@@ -1471,16 +1471,21 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)\n \tunsigned int i;\n \tint rc;\n \tuint16_t next_to_use = rxq->next_to_use;\n-\tuint16_t in_use, req_id;\n+\tuint16_t req_id;\n+#ifdef RTE_ETHDEV_DEBUG_RX\n+\tuint16_t in_use;\n+#endif\n \tstruct rte_mbuf **mbufs = rxq->rx_refill_buffer;\n \n \tif (unlikely(!count))\n \t\treturn 0;\n \n+#ifdef RTE_ETHDEV_DEBUG_RX\n \tin_use = rxq->ring_size - 1 -\n \t\tena_com_free_q_entries(rxq->ena_com_io_sq);\n-\tena_assert_msg(((in_use + count) < rxq->ring_size),\n-\t\t\"bad ring state\\n\");\n+\tif (unlikely((in_use + count) >= rxq->ring_size))\n+\t\tPMD_RX_LOG(ERR, \"Bad Rx ring state\\n\");\n+#endif\n \n \t/* get resources for incoming packets */\n \trc = rte_pktmbuf_alloc_bulk(rxq->mb_pool, mbufs, count);\n@@ -1510,7 +1515,7 @@ static int ena_populate_rx_queue(struct ena_ring *rxq, unsigned int count)\n \t}\n \n \tif (unlikely(i < count)) {\n-\t\tPMD_DRV_LOG(WARNING,\n+\t\tPMD_RX_LOG(WARNING,\n \t\t\t\"Refilled Rx queue[%d] with only %d/%d buffers\\n\",\n \t\t\trxq->id, i, count);\n \t\trte_pktmbuf_free_bulk(&mbufs[i], count - i);\n@@ -2218,12 +2223,14 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n \tstruct ena_com_rx_ctx ena_rx_ctx;\n \tint i, rc = 0;\n \n+#ifdef RTE_ETHDEV_DEBUG_RX\n \t/* Check adapter state */\n \tif (unlikely(rx_ring->adapter->state != ENA_ADAPTER_STATE_RUNNING)) {\n-\t\tPMD_DRV_LOG(ALERT,\n+\t\tPMD_RX_LOG(ALERT,\n \t\t\t\"Trying to receive pkts while device is NOT running\\n\");\n \t\treturn 0;\n \t}\n+#endif\n \n \tdescs_in_use = rx_ring->ring_size -\n \t\tena_com_free_q_entries(rx_ring->ena_com_io_sq) - 1;\n@@ -2239,7 +2246,7 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,\n \t\t\t\t    rx_ring->ena_com_io_sq,\n \t\t\t\t    &ena_rx_ctx);\n \t\tif (unlikely(rc)) {\n-\t\t\tPMD_DRV_LOG(ERR,\n+\t\t\tPMD_RX_LOG(ERR,\n \t\t\t\t\"Failed to get the packet from the device, rc: %d\\n\",\n \t\t\t\trc);\n \t\t\tif (rc == ENA_COM_NO_SPACE) {\n@@ -2416,13 +2423,13 @@ static int ena_check_space_and_linearize_mbuf(struct ena_ring *tx_ring,\n \t * be needed so we reduce the segments number from num_segments to 1\n \t */\n \tif (!ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq, 3)) {\n-\t\tPMD_DRV_LOG(DEBUG, \"Not enough space in the Tx queue\\n\");\n+\t\tPMD_TX_LOG(DEBUG, \"Not enough space in the Tx queue\\n\");\n \t\treturn ENA_COM_NO_MEM;\n \t}\n \t++tx_ring->tx_stats.linearize;\n \trc = rte_pktmbuf_linearize(mbuf);\n \tif (unlikely(rc)) {\n-\t\tPMD_DRV_LOG(WARNING, \"Mbuf linearize failed\\n\");\n+\t\tPMD_TX_LOG(WARNING, \"Mbuf linearize failed\\n\");\n \t\trte_atomic64_inc(&tx_ring->adapter->drv_stats->ierrors);\n \t\t++tx_ring->tx_stats.linearize_failed;\n \t\treturn rc;\n@@ -2436,7 +2443,7 @@ static int ena_check_space_and_linearize_mbuf(struct ena_ring *tx_ring,\n \t */\n \tif (!ena_com_sq_have_enough_space(tx_ring->ena_com_io_sq,\n \t\t\t\t\t  num_segments + 2)) {\n-\t\tPMD_DRV_LOG(DEBUG, \"Not enough space in the Tx queue\\n\");\n+\t\tPMD_TX_LOG(DEBUG, \"Not enough space in the Tx queue\\n\");\n \t\treturn ENA_COM_NO_MEM;\n \t}\n \n@@ -2551,7 +2558,7 @@ static int ena_xmit_mbuf(struct ena_ring *tx_ring, struct rte_mbuf *mbuf)\n \n \tif (unlikely(ena_com_is_doorbell_needed(tx_ring->ena_com_io_sq,\n \t\t\t&ena_tx_ctx))) {\n-\t\tPMD_DRV_LOG(DEBUG,\n+\t\tPMD_TX_LOG(DEBUG,\n \t\t\t\"LLQ Tx max burst size of queue %d achieved, writing doorbell to send burst\\n\",\n \t\t\ttx_ring->id);\n \t\tena_com_write_sq_doorbell(tx_ring->ena_com_io_sq);\n@@ -2628,12 +2635,14 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,\n \tstruct ena_ring *tx_ring = (struct ena_ring *)(tx_queue);\n \tuint16_t sent_idx = 0;\n \n+#ifdef RTE_ETHDEV_DEBUG_TX\n \t/* Check adapter state */\n \tif (unlikely(tx_ring->adapter->state != ENA_ADAPTER_STATE_RUNNING)) {\n-\t\tPMD_DRV_LOG(ALERT,\n+\t\tPMD_TX_LOG(ALERT,\n \t\t\t\"Trying to xmit pkts while device is NOT running\\n\");\n \t\treturn 0;\n \t}\n+#endif\n \n \tfor (sent_idx = 0; sent_idx < nb_pkts; sent_idx++) {\n \t\tif (ena_xmit_mbuf(tx_ring, tx_pkts[sent_idx]))\n@@ -2960,18 +2969,13 @@ RTE_PMD_REGISTER_KMOD_DEP(net_ena, \"* igb_uio | uio_pci_generic | vfio-pci\");\n RTE_PMD_REGISTER_PARAM_STRING(net_ena, ENA_DEVARG_LARGE_LLQ_HDR \"=<0|1>\");\n RTE_LOG_REGISTER_SUFFIX(ena_logtype_init, init, NOTICE);\n RTE_LOG_REGISTER_SUFFIX(ena_logtype_driver, driver, NOTICE);\n-#ifdef RTE_LIBRTE_ENA_DEBUG_RX\n-RTE_LOG_REGISTER_SUFFIX(ena_logtype_rx, rx, NOTICE);\n-#endif\n-#ifdef RTE_LIBRTE_ENA_DEBUG_TX\n-RTE_LOG_REGISTER_SUFFIX(ena_logtype_tx, tx, NOTICE);\n-#endif\n-#ifdef RTE_LIBRTE_ENA_DEBUG_TX_FREE\n-RTE_LOG_REGISTER_SUFFIX(ena_logtype_tx_free, tx_free, NOTICE);\n+#ifdef RTE_ETHDEV_DEBUG_RX\n+RTE_LOG_REGISTER_SUFFIX(ena_logtype_rx, rx, DEBUG);\n #endif\n-#ifdef RTE_LIBRTE_ENA_COM_DEBUG\n-RTE_LOG_REGISTER_SUFFIX(ena_logtype_com, com, NOTICE);\n+#ifdef RTE_ETHDEV_DEBUG_TX\n+RTE_LOG_REGISTER_SUFFIX(ena_logtype_tx, tx, DEBUG);\n #endif\n+RTE_LOG_REGISTER_SUFFIX(ena_logtype_com, com, WARNING);\n \n /******************************************************************************\n  ******************************** AENQ Handlers *******************************\ndiff --git a/drivers/net/ena/ena_logs.h b/drivers/net/ena/ena_logs.h\nindex 040bebfb98..43f16458ea 100644\n--- a/drivers/net/ena/ena_logs.h\n+++ b/drivers/net/ena/ena_logs.h\n@@ -11,7 +11,7 @@ extern int ena_logtype_init;\n \trte_log(RTE_LOG_ ## level, ena_logtype_init, \\\n \t\t\"%s(): \" fmt, __func__, ## args)\n \n-#ifdef RTE_LIBRTE_ENA_DEBUG_RX\n+#ifdef RTE_ETHDEV_DEBUG_RX\n extern int ena_logtype_rx;\n #define PMD_RX_LOG(level, fmt, args...)\t\t\t\\\n \trte_log(RTE_LOG_ ## level, ena_logtype_rx,\t\\\n@@ -20,7 +20,7 @@ extern int ena_logtype_rx;\n #define PMD_RX_LOG(level, fmt, args...) do { } while (0)\n #endif\n \n-#ifdef RTE_LIBRTE_ENA_DEBUG_TX\n+#ifdef RTE_ETHDEV_DEBUG_TX\n extern int ena_logtype_tx;\n #define PMD_TX_LOG(level, fmt, args...)\t\t\t\\\n \trte_log(RTE_LOG_ ## level, ena_logtype_tx,\t\\\n@@ -29,15 +29,6 @@ extern int ena_logtype_tx;\n #define PMD_TX_LOG(level, fmt, args...) do { } while (0)\n #endif\n \n-#ifdef RTE_LIBRTE_ENA_DEBUG_TX_FREE\n-extern int ena_logtype_tx_free;\n-#define PMD_TX_FREE_LOG(level, fmt, args...)\t\t\t\\\n-\trte_log(RTE_LOG_ ## level, ena_logtype_tx_free,\t\\\n-\t\t\"%s(): \" fmt, __func__, ## args)\n-#else\n-#define PMD_TX_FREE_LOG(level, fmt, args...) do { } while (0)\n-#endif\n-\n extern int ena_logtype_driver;\n #define PMD_DRV_LOG(level, fmt, args...) \\\n \trte_log(RTE_LOG_ ## level, ena_logtype_driver, \\\n",
    "prefixes": [
        "v4",
        "2/6"
    ]
}