get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 38947,
    "url": "http://patches.dpdk.org/api/patches/38947/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20180425155646.3627-2-stephen@networkplumber.org/",
    "project": {
        "id": 1,
        "url": "http://patches.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": "<20180425155646.3627-2-stephen@networkplumber.org>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20180425155646.3627-2-stephen@networkplumber.org",
    "date": "2018-04-25T15:56:37",
    "name": "[dpdk-dev,next,01/10] net/tap: convert to dynamic logging",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "e8da1bf99c8ac6123f8e7d7ddeb90952b6d24796",
    "submitter": {
        "id": 27,
        "url": "http://patches.dpdk.org/api/people/27/?format=api",
        "name": "Stephen Hemminger",
        "email": "stephen@networkplumber.org"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20180425155646.3627-2-stephen@networkplumber.org/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/38947/comments/",
    "check": "fail",
    "checks": "http://patches.dpdk.org/api/patches/38947/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id B95518D8D;\n\tWed, 25 Apr 2018 17:56:53 +0200 (CEST)",
            "from mail-pg0-f65.google.com (mail-pg0-f65.google.com\n\t[74.125.83.65]) by dpdk.org (Postfix) with ESMTP id 5B5638DAE\n\tfor <dev@dpdk.org>; Wed, 25 Apr 2018 17:56:52 +0200 (CEST)",
            "by mail-pg0-f65.google.com with SMTP id j11so13635431pgf.2\n\tfor <dev@dpdk.org>; Wed, 25 Apr 2018 08:56:52 -0700 (PDT)",
            "from xeon-e3.lan (204-195-71-95.wavecable.com. [204.195.71.95])\n\tby smtp.gmail.com with ESMTPSA id\n\ty3sm25713924pgc.81.2018.04.25.08.56.49\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 25 Apr 2018 08:56:49 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=networkplumber-org.20150623.gappssmtp.com; s=20150623;\n\th=from:to:cc:subject:date:message-id:in-reply-to:references;\n\tbh=xO05wdM8SHMakUlgjWc97MY2a3agwRJ31KmUJT0ZHqw=;\n\tb=nDce5pAUXFSPi5KGPgJRCw6oUkLJNikFmTJrFiUA/YBo4yaAE0VRnLwGJODAkJBy6d\n\tDOMCWJoBCyZeHxnrixu81PEdc9nNWYCEjusMHv+fdar/eY7qR5pNEsntXXKJJ4Tkcju/\n\tRE8YLocdFuWUITAvLlUgSG3gs5MW9YhIsG9htqCwpceBxdVGgteuJEeq+sClND7Xvlcn\n\tbmxk4ToMhkxW8xvoT//IV+NTOD67SMpPpQpq190w0tlmaOsORTtt+fpQKfIxnqg342BL\n\tmK1dX4Blcd/NbBRP/Za2Q62yzMIr69EsSd5n8CrT3rMApudHzA6wBGxvUtRZdXwaUQO/\n\t5v1g==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\n\t:references;\n\tbh=xO05wdM8SHMakUlgjWc97MY2a3agwRJ31KmUJT0ZHqw=;\n\tb=QsFY6EP+rXH8wWPnYRis3kenfxAXgU/jLeRPQ2vmDCXkxf+nBl+DGFoVOZxmIsK2WO\n\tQLuxLs8dUmLBgwVuVGmqhb1JI/VfIfVqiZOOf+jNU4X7W46gO4Mh/c3lZ0qrjZkQeSBk\n\tgeOGiKXZWYqF4WXjCuU8PyXD4V07LycVw5s3vV4dTmKZ+fTlVotght/6MscqV2BsFVMk\n\t2aHDodfc0wAIegVtWqOQ6Btam16Dv0r/nCQ3eyF6caR0NiPT/+Exjz7rBYOFo/wwa6lB\n\tZkSRXlOtpyza6uOD1fZSnLKrPTsrfl7xWA9KGPw+KdakJb1mRxC4PenuceJMQEKWapKD\n\t9lOA==",
        "X-Gm-Message-State": "ALQs6tC5uuBkCEJ+/cHcRRSyDB3Uq1UcROvbBi/kqfV87MQidFT1EtQ0\n\tg//HL9ouJTHSVVYWHsb84SIYF+vRJEA=",
        "X-Google-Smtp-Source": "AIpwx48HT5H52XSq+7Vq643JsTSIo5aBCLvS63hJkUgdOmOSNbJAM8Z2yeGr8nEFgttfhlnkMxk8yw==",
        "X-Received": "by 10.98.70.155 with SMTP id o27mr28273733pfi.124.1524671810679; \n\tWed, 25 Apr 2018 08:56:50 -0700 (PDT)",
        "From": "Stephen Hemminger <stephen@networkplumber.org>",
        "To": "dev@dpdk.org",
        "Cc": "Stephen Hemminger <stephen@networkplumber.org>",
        "Date": "Wed, 25 Apr 2018 08:56:37 -0700",
        "Message-Id": "<20180425155646.3627-2-stephen@networkplumber.org>",
        "X-Mailer": "git-send-email 2.17.0",
        "In-Reply-To": "<20180425155646.3627-1-stephen@networkplumber.org>",
        "References": "<20180425155646.3627-1-stephen@networkplumber.org>",
        "Subject": "[dpdk-dev] [PATCH next 01/10] net/tap: convert to dynamic logging",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Use new logging macro to convert all calls to RTE_LOG() into\nnew dynamic log type.\n\nAlso fix whitespace.\n\nSigned-off-by: Stephen Hemminger <stephen@networkplumber.org>\n---\n drivers/net/tap/rte_eth_tap.c | 168 ++++++++++++++++++----------------\n drivers/net/tap/rte_eth_tap.h |   1 +\n drivers/net/tap/tap_flow.c    |  51 +++++------\n drivers/net/tap/tap_intr.c    |   2 +-\n drivers/net/tap/tap_log.h     |  10 ++\n drivers/net/tap/tap_netlink.c |  18 ++--\n drivers/net/tap/tap_tcmsgs.c  |   9 +-\n 7 files changed, 138 insertions(+), 121 deletions(-)\n create mode 100644 drivers/net/tap/tap_log.h",
    "diff": "diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c\nindex cca5852cc3ac..63f05cec6706 100644\n--- a/drivers/net/tap/rte_eth_tap.c\n+++ b/drivers/net/tap/rte_eth_tap.c\n@@ -118,50 +118,46 @@ tun_alloc(struct pmd_internals *pmd)\n \tifr.ifr_flags = (tap_type) ? IFF_TAP : IFF_TUN | IFF_POINTOPOINT;\n \tsnprintf(ifr.ifr_name, IFNAMSIZ, \"%s\", pmd->name);\n \n-\tRTE_LOG(DEBUG, PMD, \"ifr_name '%s'\\n\", ifr.ifr_name);\n+\tTAP_LOG(DEBUG, \"ifr_name '%s'\", ifr.ifr_name);\n \n \tfd = open(TUN_TAP_DEV_PATH, O_RDWR);\n \tif (fd < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"Unable to create %s interface\\n\",\n-\t\t\t\ttuntap_name);\n+\t\tTAP_LOG(ERR, \"Unable to create %s interface\", tuntap_name);\n \t\tgoto error;\n \t}\n \n #ifdef IFF_MULTI_QUEUE\n \t/* Grab the TUN features to verify we can work multi-queue */\n \tif (ioctl(fd, TUNGETFEATURES, &features) < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"%s unable to get TUN/TAP features\\n\",\n-\t\t\t\ttuntap_name);\n+\t\tTAP_LOG(ERR, \"%s unable to get TUN/TAP features\",\n+\t\t\ttuntap_name);\n \t\tgoto error;\n \t}\n-\tRTE_LOG(DEBUG, PMD, \"%s Features %08x\\n\", tuntap_name, features);\n+\tTAP_LOG(DEBUG, \"%s Features %08x\", tuntap_name, features);\n \n \tif (features & IFF_MULTI_QUEUE) {\n-\t\tRTE_LOG(DEBUG, PMD, \"  Multi-queue support for %d queues\\n\",\n+\t\tTAP_LOG(DEBUG, \"  Multi-queue support for %d queues\",\n \t\t\tRTE_PMD_TAP_MAX_QUEUES);\n \t\tifr.ifr_flags |= IFF_MULTI_QUEUE;\n \t} else\n #endif\n \t{\n \t\tifr.ifr_flags |= IFF_ONE_QUEUE;\n-\t\tRTE_LOG(DEBUG, PMD, \"  Single queue only support\\n\");\n+\t\tTAP_LOG(DEBUG, \"  Single queue only support\");\n \t}\n \n \t/* Set the TUN/TAP configuration and set the name if needed */\n \tif (ioctl(fd, TUNSETIFF, (void *)&ifr) < 0) {\n-\t\tRTE_LOG(WARNING, PMD,\n-\t\t\t\"Unable to set TUNSETIFF for %s\\n\",\n-\t\t\tifr.ifr_name);\n-\t\tperror(\"TUNSETIFF\");\n+\t\tTAP_LOG(WARNING, \"Unable to set TUNSETIFF for %s: %s\",\n+\t\t\tifr.ifr_name, strerror(errno));\n \t\tgoto error;\n \t}\n \n \t/* Always set the file descriptor to non-blocking */\n \tif (fcntl(fd, F_SETFL, O_NONBLOCK) < 0) {\n-\t\tRTE_LOG(WARNING, PMD,\n-\t\t\t\"Unable to set %s to nonblocking\\n\",\n-\t\t\tifr.ifr_name);\n-\t\tperror(\"F_SETFL, NONBLOCK\");\n+\t\tTAP_LOG(WARNING,\n+\t\t\t\"Unable to set %s to nonblocking: %s\",\n+\t\t\tifr.ifr_name, strerror(errno));\n \t\tgoto error;\n \t}\n \n@@ -195,10 +191,11 @@ tun_alloc(struct pmd_internals *pmd)\n \t\tfcntl(fd, F_SETFL, flags | O_ASYNC);\n \t\tfcntl(fd, F_SETOWN, getpid());\n \t} while (0);\n+\n \tif (errno) {\n \t\t/* Disable trigger globally in case of error */\n \t\ttap_trigger = 0;\n-\t\tRTE_LOG(WARNING, PMD, \"Rx trigger disabled: %s\\n\",\n+\t\tTAP_LOG(WARNING, \"Rx trigger disabled: %s\",\n \t\t\tstrerror(errno));\n \t}\n \n@@ -630,8 +627,8 @@ tap_ioctl(struct pmd_internals *pmd, unsigned long request,\n \treturn 0;\n \n error:\n-\tRTE_LOG(DEBUG, PMD, \"%s: %s(%s) failed: %s(%d)\\n\", ifr->ifr_name,\n-\t\t__func__, tap_ioctl_req2str(request), strerror(errno), errno);\n+\tTAP_LOG(DEBUG, \"%s(%s) failed: %s(%d)\", ifr->ifr_name,\n+\t\ttap_ioctl_req2str(request), strerror(errno), errno);\n \treturn -errno;\n }\n \n@@ -683,34 +680,34 @@ tap_dev_configure(struct rte_eth_dev *dev)\n \n \tif ((tx_offloads & supp_tx_offloads) != tx_offloads) {\n \t\trte_errno = ENOTSUP;\n-\t\tRTE_LOG(ERR, PMD,\n+\t\tTAP_LOG(ERR,\n \t\t\t\"Some Tx offloads are not supported \"\n-\t\t\t\"requested 0x%\" PRIx64 \" supported 0x%\" PRIx64 \"\\n\",\n+\t\t\t\"requested 0x%\" PRIx64 \" supported 0x%\" PRIx64,\n \t\t\ttx_offloads, supp_tx_offloads);\n \t\treturn -rte_errno;\n \t}\n \tif (dev->data->nb_rx_queues > RTE_PMD_TAP_MAX_QUEUES) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"%s: number of rx queues %d exceeds max num of queues %d\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"%s: number of rx queues %d exceeds max num of queues %d\",\n \t\t\tdev->device->name,\n \t\t\tdev->data->nb_rx_queues,\n \t\t\tRTE_PMD_TAP_MAX_QUEUES);\n \t\treturn -1;\n \t}\n \tif (dev->data->nb_tx_queues > RTE_PMD_TAP_MAX_QUEUES) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"%s: number of tx queues %d exceeds max num of queues %d\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"%s: number of tx queues %d exceeds max num of queues %d\",\n \t\t\tdev->device->name,\n \t\t\tdev->data->nb_tx_queues,\n \t\t\tRTE_PMD_TAP_MAX_QUEUES);\n \t\treturn -1;\n \t}\n \n-\tRTE_LOG(INFO, PMD, \"%s: %p: TX configured queues number: %u\\n\",\n-\t     dev->device->name, (void *)dev, dev->data->nb_tx_queues);\n+\tTAP_LOG(INFO, \"%s: %p: TX configured queues number: %u\",\n+\t\tdev->device->name, (void *)dev, dev->data->nb_tx_queues);\n \n-\tRTE_LOG(INFO, PMD, \"%s: %p: RX configured queues number: %u\\n\",\n-\t     dev->device->name, (void *)dev, dev->data->nb_rx_queues);\n+\tTAP_LOG(INFO, \"%s: %p: RX configured queues number: %u\",\n+\t\tdev->device->name, (void *)dev, dev->data->nb_rx_queues);\n \n \treturn 0;\n }\n@@ -965,7 +962,7 @@ tap_mac_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)\n \tint ret;\n \n \tif (is_zero_ether_addr(mac_addr)) {\n-\t\tRTE_LOG(ERR, PMD, \"%s: can't set an empty MAC address\\n\",\n+\t\tTAP_LOG(ERR, \"%s: can't set an empty MAC address\",\n \t\t\tdev->device->name);\n \t\treturn -EINVAL;\n \t}\n@@ -993,15 +990,15 @@ tap_mac_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr)\n \t\t/* Replace MAC redirection rule after a MAC change */\n \t\tret = tap_flow_implicit_destroy(pmd, TAP_REMOTE_LOCAL_MAC);\n \t\tif (ret < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"%s: Couldn't delete MAC redirection rule\\n\",\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"%s: Couldn't delete MAC redirection rule\",\n \t\t\t\tdev->device->name);\n \t\t\treturn ret;\n \t\t}\n \t\tret = tap_flow_implicit_create(pmd, TAP_REMOTE_LOCAL_MAC);\n \t\tif (ret < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"%s: Couldn't add MAC redirection rule\\n\",\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"%s: Couldn't add MAC redirection rule\",\n \t\t\t\tdev->device->name);\n \t\t\treturn ret;\n \t\t}\n@@ -1034,29 +1031,27 @@ tap_setup_queue(struct rte_eth_dev *dev,\n \t}\n \tif (*fd != -1) {\n \t\t/* fd for this queue already exists */\n-\t\tRTE_LOG(DEBUG, PMD, \"%s: fd %d for %s queue qid %d exists\\n\",\n+\t\tTAP_LOG(DEBUG, \"%s: fd %d for %s queue qid %d exists\",\n \t\t\tpmd->name, *fd, dir, qid);\n \t} else if (*other_fd != -1) {\n \t\t/* Only other_fd exists. dup it */\n \t\t*fd = dup(*other_fd);\n \t\tif (*fd < 0) {\n \t\t\t*fd = -1;\n-\t\t\tRTE_LOG(ERR, PMD, \"%s: dup() failed.\\n\",\n-\t\t\t\tpmd->name);\n+\t\t\tTAP_LOG(ERR, \"%s: dup() failed.\", pmd->name);\n \t\t\treturn -1;\n \t\t}\n-\t\tRTE_LOG(DEBUG, PMD, \"%s: dup fd %d for %s queue qid %d (%d)\\n\",\n+\t\tTAP_LOG(DEBUG, \"%s: dup fd %d for %s queue qid %d (%d)\",\n \t\t\tpmd->name, *other_fd, dir, qid, *fd);\n \t} else {\n \t\t/* Both RX and TX fds do not exist (equal -1). Create fd */\n \t\t*fd = tun_alloc(pmd);\n \t\tif (*fd < 0) {\n \t\t\t*fd = -1; /* restore original value */\n-\t\t\tRTE_LOG(ERR, PMD, \"%s: tun_alloc() failed.\\n\",\n-\t\t\t\tpmd->name);\n+\t\t\tTAP_LOG(ERR, \"%s: tun_alloc() failed.\", pmd->name);\n \t\t\treturn -1;\n \t\t}\n-\t\tRTE_LOG(DEBUG, PMD, \"%s: add %s queue for qid %d fd %d\\n\",\n+\t\tTAP_LOG(DEBUG, \"%s: add %s queue for qid %d fd %d\",\n \t\t\tpmd->name, dir, qid, *fd);\n \t}\n \n@@ -1086,8 +1081,8 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,\n \tint i;\n \n \tif (rx_queue_id >= dev->data->nb_rx_queues || !mp) {\n-\t\tRTE_LOG(WARNING, PMD,\n-\t\t\t\"nb_rx_queues %d too small or mempool NULL\\n\",\n+\t\tTAP_LOG(WARNING,\n+\t\t\t\"nb_rx_queues %d too small or mempool NULL\",\n \t\t\tdev->data->nb_rx_queues);\n \t\treturn -1;\n \t}\n@@ -1095,10 +1090,10 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,\n \t/* Verify application offloads are valid for our port and queue. */\n \tif (!tap_rxq_are_offloads_valid(dev, rx_conf->offloads)) {\n \t\trte_errno = ENOTSUP;\n-\t\tRTE_LOG(ERR, PMD,\n+\t\tTAP_LOG(ERR,\n \t\t\t\"%p: Rx queue offloads 0x%\" PRIx64\n \t\t\t\" don't match port offloads 0x%\" PRIx64\n-\t\t\t\" or supported offloads 0x%\" PRIx64 \"\\n\",\n+\t\t\t\" or supported offloads 0x%\" PRIx64,\n \t\t\t(void *)dev, rx_conf->offloads,\n \t\t\tdev->data->dev_conf.rxmode.offloads,\n \t\t\t(tap_rx_offload_get_port_capa() |\n@@ -1112,8 +1107,8 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,\n \tiovecs = rte_zmalloc_socket(dev->device->name, sizeof(*iovecs), 0,\n \t\t\t\t    socket_id);\n \tif (!iovecs) {\n-\t\tRTE_LOG(WARNING, PMD,\n-\t\t\t\"%s: Couldn't allocate %d RX descriptors\\n\",\n+\t\tTAP_LOG(WARNING,\n+\t\t\t\"%s: Couldn't allocate %d RX descriptors\",\n \t\t\tdev->device->name, nb_desc);\n \t\treturn -ENOMEM;\n \t}\n@@ -1132,8 +1127,8 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,\n \tfor (i = 1; i <= nb_desc; i++) {\n \t\t*tmp = rte_pktmbuf_alloc(rxq->mp);\n \t\tif (!*tmp) {\n-\t\t\tRTE_LOG(WARNING, PMD,\n-\t\t\t\t\"%s: couldn't allocate memory for queue %d\\n\",\n+\t\t\tTAP_LOG(WARNING,\n+\t\t\t\t\"%s: couldn't allocate memory for queue %d\",\n \t\t\t\tdev->device->name, rx_queue_id);\n \t\t\tret = -ENOMEM;\n \t\t\tgoto error;\n@@ -1145,7 +1140,7 @@ tap_rx_queue_setup(struct rte_eth_dev *dev,\n \t\ttmp = &(*tmp)->next;\n \t}\n \n-\tRTE_LOG(DEBUG, PMD, \"  RX TUNTAP device name %s, qid %d on fd %d\\n\",\n+\tTAP_LOG(DEBUG, \"  RX TUNTAP device name %s, qid %d on fd %d\",\n \t\tinternals->name, rx_queue_id, internals->rxq[rx_queue_id].fd);\n \n \treturn 0;\n@@ -1186,7 +1181,7 @@ tap_tx_queue_setup(struct rte_eth_dev *dev,\n \t\t\t\t\t DEV_TX_OFFLOAD_TCP_CKSUM));\n \t\t} else {\n \t\t\trte_errno = ENOTSUP;\n-\t\t\tRTE_LOG(ERR, PMD,\n+\t\t\tTAP_LOG(ERR,\n \t\t\t\t\"%p: Tx queue offloads 0x%\" PRIx64\n \t\t\t\t\" don't match port offloads 0x%\" PRIx64\n \t\t\t\t\" or supported offloads 0x%\" PRIx64,\n@@ -1199,8 +1194,8 @@ tap_tx_queue_setup(struct rte_eth_dev *dev,\n \tret = tap_setup_queue(dev, internals, tx_queue_id, 0);\n \tif (ret == -1)\n \t\treturn -1;\n-\tRTE_LOG(DEBUG, PMD,\n-\t\t\"  TX TUNTAP device name %s, qid %d on fd %d csum %s\\n\",\n+\tTAP_LOG(DEBUG,\n+\t\t\"  TX TUNTAP device name %s, qid %d on fd %d csum %s\",\n \t\tinternals->name, tx_queue_id, internals->txq[tx_queue_id].fd,\n \t\ttxq->csum ? \"on\" : \"off\");\n \n@@ -1383,12 +1378,12 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \tstruct ifreq ifr;\n \tint i;\n \n-\tRTE_LOG(DEBUG, PMD, \"%s device on numa %u\\n\",\n+\tTAP_LOG(DEBUG, \"%s device on numa %u\",\n \t\t\ttuntap_name, rte_socket_id());\n \n \tdev = rte_eth_vdev_allocate(vdev, sizeof(*pmd));\n \tif (!dev) {\n-\t\tRTE_LOG(ERR, PMD, \"%s Unable to allocate device struct\\n\",\n+\t\tTAP_LOG(ERR, \"%s Unable to allocate device struct\",\n \t\t\t\ttuntap_name);\n \t\tgoto error_exit_nodev;\n \t}\n@@ -1399,8 +1394,8 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \n \tpmd->ioctl_sock = socket(AF_INET, SOCK_DGRAM, 0);\n \tif (pmd->ioctl_sock == -1) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"%s Unable to get a socket for management: %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"%s Unable to get a socket for management: %s\",\n \t\t\ttuntap_name, strerror(errno));\n \t\tgoto error_exit;\n \t}\n@@ -1469,22 +1464,22 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \t */\n \tpmd->nlsk_fd = tap_nl_init(0);\n \tif (pmd->nlsk_fd == -1) {\n-\t\tRTE_LOG(WARNING, PMD, \"%s: failed to create netlink socket.\\n\",\n+\t\tTAP_LOG(WARNING, \"%s: failed to create netlink socket.\",\n \t\t\tpmd->name);\n \t\tgoto disable_rte_flow;\n \t}\n \tpmd->if_index = if_nametoindex(pmd->name);\n \tif (!pmd->if_index) {\n-\t\tRTE_LOG(ERR, PMD, \"%s: failed to get if_index.\\n\", pmd->name);\n+\t\tTAP_LOG(ERR, \"%s: failed to get if_index.\", pmd->name);\n \t\tgoto disable_rte_flow;\n \t}\n \tif (qdisc_create_multiq(pmd->nlsk_fd, pmd->if_index) < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"%s: failed to create multiq qdisc.\\n\",\n+\t\tTAP_LOG(ERR, \"%s: failed to create multiq qdisc.\",\n \t\t\tpmd->name);\n \t\tgoto disable_rte_flow;\n \t}\n \tif (qdisc_create_ingress(pmd->nlsk_fd, pmd->if_index) < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"%s: failed to create ingress qdisc.\\n\",\n+\t\tTAP_LOG(ERR, \"%s: failed to create ingress qdisc.\",\n \t\t\tpmd->name);\n \t\tgoto disable_rte_flow;\n \t}\n@@ -1493,7 +1488,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \tif (strlen(remote_iface)) {\n \t\tpmd->remote_if_index = if_nametoindex(remote_iface);\n \t\tif (!pmd->remote_if_index) {\n-\t\t\tRTE_LOG(ERR, PMD, \"%s: failed to get %s if_index.\\n\",\n+\t\t\tTAP_LOG(ERR, \"%s: failed to get %s if_index.\",\n \t\t\t\tpmd->name, remote_iface);\n \t\t\tgoto error_remote;\n \t\t}\n@@ -1505,7 +1500,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \n \t\t/* Replicate remote MAC address */\n \t\tif (tap_ioctl(pmd, SIOCGIFHWADDR, &ifr, 0, REMOTE_ONLY) < 0) {\n-\t\t\tRTE_LOG(ERR, PMD, \"%s: failed to get %s MAC address.\\n\",\n+\t\t\tTAP_LOG(ERR, \"%s: failed to get %s MAC address.\",\n \t\t\t\tpmd->name, pmd->remote_iface);\n \t\t\tgoto error_remote;\n \t\t}\n@@ -1513,7 +1508,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \t\t\t   ETHER_ADDR_LEN);\n \t\t/* The desired MAC is already in ifreq after SIOCGIFHWADDR. */\n \t\tif (tap_ioctl(pmd, SIOCSIFHWADDR, &ifr, 0, LOCAL_ONLY) < 0) {\n-\t\t\tRTE_LOG(ERR, PMD, \"%s: failed to get %s MAC address.\\n\",\n+\t\t\tTAP_LOG(ERR, \"%s: failed to get %s MAC address.\",\n \t\t\t\tpmd->name, remote_iface);\n \t\t\tgoto error_remote;\n \t\t}\n@@ -1526,7 +1521,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \t\tqdisc_flush(pmd->nlsk_fd, pmd->remote_if_index);\n \t\tif (qdisc_create_ingress(pmd->nlsk_fd,\n \t\t\t\t\t pmd->remote_if_index) < 0) {\n-\t\t\tRTE_LOG(ERR, PMD, \"%s: failed to create ingress qdisc.\\n\",\n+\t\t\tTAP_LOG(ERR, \"%s: failed to create ingress qdisc.\",\n \t\t\t\tpmd->remote_iface);\n \t\t\tgoto error_remote;\n \t\t}\n@@ -1535,8 +1530,8 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \t\t    tap_flow_implicit_create(pmd, TAP_REMOTE_LOCAL_MAC) < 0 ||\n \t\t    tap_flow_implicit_create(pmd, TAP_REMOTE_BROADCAST) < 0 ||\n \t\t    tap_flow_implicit_create(pmd, TAP_REMOTE_BROADCASTV6) < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"%s: failed to create implicit rules.\\n\",\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"%s: failed to create implicit rules.\",\n \t\t\t\tpmd->name);\n \t\t\tgoto error_remote;\n \t\t}\n@@ -1545,16 +1540,16 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \treturn 0;\n \n disable_rte_flow:\n-\tRTE_LOG(ERR, PMD, \" Disabling rte flow support: %s(%d)\\n\",\n+\tTAP_LOG(ERR, \" Disabling rte flow support: %s(%d)\",\n \t\tstrerror(errno), errno);\n \tif (strlen(remote_iface)) {\n-\t\tRTE_LOG(ERR, PMD, \"Remote feature requires flow support.\\n\");\n+\t\tTAP_LOG(ERR, \"Remote feature requires flow support.\");\n \t\tgoto error_exit;\n \t}\n \treturn 0;\n \n error_remote:\n-\tRTE_LOG(ERR, PMD, \" Can't set up remote feature: %s(%d)\\n\",\n+\tTAP_LOG(ERR, \" Can't set up remote feature: %s(%d)\",\n \t\tstrerror(errno), errno);\n \ttap_flow_implicit_flush(pmd, NULL);\n \n@@ -1564,7 +1559,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n \trte_eth_dev_release_port(dev);\n \n error_exit_nodev:\n-\tRTE_LOG(ERR, PMD, \"%s Unable to initialize %s\\n\",\n+\tTAP_LOG(ERR, \"%s Unable to initialize %s\",\n \t\ttuntap_name, rte_vdev_device_name(vdev));\n \n \treturn -EINVAL;\n@@ -1644,11 +1639,11 @@ set_mac_type(const char *key __rte_unused,\n \tif (parse_user_mac(user_mac, value) != 6)\n \t\tgoto error;\n success:\n-\tRTE_LOG(DEBUG, PMD, \"TAP user MAC param (%s)\\n\", value);\n+\tTAP_LOG(DEBUG, \"TAP user MAC param (%s)\", value);\n \treturn 0;\n \n error:\n-\tRTE_LOG(ERR, PMD, \"TAP user MAC (%s) is not in format (%s|%s)\\n\",\n+\tTAP_LOG(ERR, \"TAP user MAC (%s) is not in format (%s|%s)\",\n \t\tvalue, ETH_TAP_MAC_FIXED, ETH_TAP_USR_MAC_FMT);\n \treturn -1;\n }\n@@ -1676,7 +1671,7 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev)\n \tmemset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN);\n \n \tif (params && (params[0] != '\\0')) {\n-\t\tRTE_LOG(DEBUG, PMD, \"parameters (%s)\\n\", params);\n+\t\tTAP_LOG(DEBUG, \"parameters (%s)\", params);\n \n \t\tkvlist = rte_kvargs_parse(params, valid_arguments);\n \t\tif (kvlist) {\n@@ -1693,14 +1688,14 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev)\n \t}\n \tpmd_link.link_speed = ETH_SPEED_NUM_10G;\n \n-\tRTE_LOG(NOTICE, PMD, \"Initializing pmd_tun for %s as %s\\n\",\n+\tTAP_LOG(NOTICE, \"Initializing pmd_tun for %s as %s\",\n \t\tname, tun_name);\n \n \tret = eth_dev_tap_create(dev, tun_name, remote_iface, 0);\n \n leave:\n \tif (ret == -1) {\n-\t\tRTE_LOG(ERR, PMD, \"Failed to create pmd for %s as %s\\n\",\n+\t\tTAP_LOG(ERR, \"Failed to create pmd for %s as %s\",\n \t\t\tname, tun_name);\n \t\ttun_unit--; /* Restore the unit number */\n \t}\n@@ -1733,7 +1728,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)\n \t    strlen(params) == 0) {\n \t\teth_dev = rte_eth_dev_attach_secondary(name);\n \t\tif (!eth_dev) {\n-\t\t\tRTE_LOG(ERR, PMD, \"Failed to probe %s\\n\", name);\n+\t\t\tTAP_LOG(ERR, \"Failed to probe %s\", name);\n \t\t\treturn -1;\n \t\t}\n \t\t/* TODO: request info from primary to set up Rx and Tx */\n@@ -1747,7 +1742,7 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)\n \tmemset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN);\n \n \tif (params && (params[0] != '\\0')) {\n-\t\tRTE_LOG(DEBUG, PMD, \"parameters (%s)\\n\", params);\n+\t\tTAP_LOG(DEBUG, \"parameters (%s)\", params);\n \n \t\tkvlist = rte_kvargs_parse(params, valid_arguments);\n \t\tif (kvlist) {\n@@ -1781,14 +1776,14 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev)\n \t}\n \tpmd_link.link_speed = speed;\n \n-\tRTE_LOG(NOTICE, PMD, \"Initializing pmd_tap for %s as %s\\n\",\n+\tTAP_LOG(NOTICE, \"Initializing pmd_tap for %s as %s\",\n \t\tname, tap_name);\n \n \tret = eth_dev_tap_create(dev, tap_name, remote_iface, &user_mac);\n \n leave:\n \tif (ret == -1) {\n-\t\tRTE_LOG(ERR, PMD, \"Failed to create pmd for %s as %s\\n\",\n+\t\tTAP_LOG(ERR, \"Failed to create pmd for %s as %s\",\n \t\t\tname, tap_name);\n \t\ttap_unit--;\t\t/* Restore the unit number */\n \t}\n@@ -1806,7 +1801,7 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev)\n \tstruct pmd_internals *internals;\n \tint i;\n \n-\tRTE_LOG(DEBUG, PMD, \"Closing TUN/TAP Ethernet device on numa %u\\n\",\n+\tTAP_LOG(DEBUG, \"Closing TUN/TAP Ethernet device on numa %u\",\n \t\trte_socket_id());\n \n \t/* find the ethdev entry */\n@@ -1848,6 +1843,7 @@ static struct rte_vdev_driver pmd_tap_drv = {\n \t.probe = rte_pmd_tap_probe,\n \t.remove = rte_pmd_tap_remove,\n };\n+\n RTE_PMD_REGISTER_VDEV(net_tap, pmd_tap_drv);\n RTE_PMD_REGISTER_VDEV(net_tun, pmd_tun_drv);\n RTE_PMD_REGISTER_ALIAS(net_tap, eth_tap);\n@@ -1857,3 +1853,13 @@ RTE_PMD_REGISTER_PARAM_STRING(net_tap,\n \t\t\t      ETH_TAP_IFACE_ARG \"=<string> \"\n \t\t\t      ETH_TAP_MAC_ARG \"=\" ETH_TAP_MAC_ARG_FMT \" \"\n \t\t\t      ETH_TAP_REMOTE_ARG \"=<string>\");\n+int tap_logtype;\n+\n+RTE_INIT(tap_init_log);\n+static void\n+tap_init_log(void)\n+{\n+\ttap_logtype = rte_log_register(\"pmd.net.tap\");\n+\tif (tap_logtype >= 0)\n+\t\trte_log_set_level(tap_logtype, RTE_LOG_NOTICE);\n+}\ndiff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h\nindex 25b65bf308c7..67c9d4beebb6 100644\n--- a/drivers/net/tap/rte_eth_tap.h\n+++ b/drivers/net/tap/rte_eth_tap.h\n@@ -15,6 +15,7 @@\n \n #include <rte_ethdev_driver.h>\n #include <rte_ether.h>\n+#include \"tap_log.h\"\n \n #ifdef IFF_MULTI_QUEUE\n #define RTE_PMD_TAP_MAX_QUEUES\tTAP_MAX_QUEUES\ndiff --git a/drivers/net/tap/tap_flow.c b/drivers/net/tap/tap_flow.c\nindex 3b7a960b0946..1b23c09174c8 100644\n--- a/drivers/net/tap/tap_flow.c\n+++ b/drivers/net/tap/tap_flow.c\n@@ -1376,8 +1376,8 @@ tap_flow_create(struct rte_eth_dev *dev,\n \t}\n \terr = tap_nl_recv_ack(pmd->nlsk_fd);\n \tif (err < 0) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Kernel refused TC filter rule creation (%d): %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Kernel refused TC filter rule creation (%d): %s\",\n \t\t\terrno, strerror(errno));\n \t\trte_flow_error_set(error, EEXIST, RTE_FLOW_ERROR_TYPE_HANDLE,\n \t\t\t\t   NULL,\n@@ -1421,8 +1421,8 @@ tap_flow_create(struct rte_eth_dev *dev,\n \t\t}\n \t\terr = tap_nl_recv_ack(pmd->nlsk_fd);\n \t\tif (err < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"Kernel refused TC filter rule creation (%d): %s\\n\",\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"Kernel refused TC filter rule creation (%d): %s\",\n \t\t\t\terrno, strerror(errno));\n \t\t\trte_flow_error_set(\n \t\t\t\terror, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE,\n@@ -1476,8 +1476,8 @@ tap_flow_destroy_pmd(struct pmd_internals *pmd,\n \tif (ret < 0 && errno == ENOENT)\n \t\tret = 0;\n \tif (ret < 0) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Kernel refused TC filter rule deletion (%d): %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Kernel refused TC filter rule deletion (%d): %s\",\n \t\t\terrno, strerror(errno));\n \t\trte_flow_error_set(\n \t\t\terror, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,\n@@ -1500,8 +1500,8 @@ tap_flow_destroy_pmd(struct pmd_internals *pmd,\n \t\tif (ret < 0 && errno == ENOENT)\n \t\t\tret = 0;\n \t\tif (ret < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"Kernel refused TC filter rule deletion (%d): %s\\n\",\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"Kernel refused TC filter rule deletion (%d): %s\",\n \t\t\t\terrno, strerror(errno));\n \t\t\trte_flow_error_set(\n \t\t\t\terror, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE,\n@@ -1665,7 +1665,7 @@ int tap_flow_implicit_create(struct pmd_internals *pmd,\n \n \tremote_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0);\n \tif (!remote_flow) {\n-\t\tRTE_LOG(ERR, PMD, \"Cannot allocate memory for rte_flow\\n\");\n+\t\tTAP_LOG(ERR, \"Cannot allocate memory for rte_flow\");\n \t\tgoto fail;\n \t}\n \tmsg = &remote_flow->msg;\n@@ -1706,12 +1706,12 @@ int tap_flow_implicit_create(struct pmd_internals *pmd,\n \t\ttap_flow_set_handle(remote_flow);\n \tif (priv_flow_process(pmd, attr, items, actions, NULL,\n \t\t\t      remote_flow, implicit_rte_flows[idx].mirred)) {\n-\t\tRTE_LOG(ERR, PMD, \"rte flow rule validation failed\\n\");\n+\t\tTAP_LOG(ERR, \"rte flow rule validation failed\");\n \t\tgoto fail;\n \t}\n \terr = tap_nl_send(pmd->nlsk_fd, &msg->nh);\n \tif (err < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"Failure sending nl request\\n\");\n+\t\tTAP_LOG(ERR, \"Failure sending nl request\");\n \t\tgoto fail;\n \t}\n \terr = tap_nl_recv_ack(pmd->nlsk_fd);\n@@ -1719,8 +1719,8 @@ int tap_flow_implicit_create(struct pmd_internals *pmd,\n \t\t/* Silently ignore re-entering remote promiscuous rule */\n \t\tif (errno == EEXIST && idx == TAP_REMOTE_PROMISC)\n \t\t\tgoto success;\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Kernel refused TC filter rule creation (%d): %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Kernel refused TC filter rule creation (%d): %s\",\n \t\t\terrno, strerror(errno));\n \t\tgoto fail;\n \t}\n@@ -1836,8 +1836,8 @@ static int rss_enable(struct pmd_internals *pmd,\n \t\t\t\tsizeof(struct rss_key),\n \t\t\t\tMAX_RSS_KEYS);\n \tif (pmd->map_fd < 0) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Failed to create BPF map (%d): %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Failed to create BPF map (%d): %s\",\n \t\t\t\terrno, strerror(errno));\n \t\trte_flow_error_set(\n \t\t\terror, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,\n@@ -1854,7 +1854,7 @@ static int rss_enable(struct pmd_internals *pmd,\n \tfor (i = 0; i < pmd->dev->data->nb_rx_queues; i++) {\n \t\tpmd->bpf_fd[i] = tap_flow_bpf_cls_q(i);\n \t\tif (pmd->bpf_fd[i] < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n+\t\t\tTAP_LOG(ERR,\n \t\t\t\t\"Failed to load BPF section %s for queue %d\",\n \t\t\t\tSEC_NAME_CLS_Q, i);\n \t\t\trte_flow_error_set(\n@@ -1868,7 +1868,7 @@ static int rss_enable(struct pmd_internals *pmd,\n \n \t\trss_flow = rte_malloc(__func__, sizeof(struct rte_flow), 0);\n \t\tif (!rss_flow) {\n-\t\t\tRTE_LOG(ERR, PMD,\n+\t\t\tTAP_LOG(ERR,\n \t\t\t\t\"Cannot allocate memory for rte_flow\");\n \t\t\treturn -1;\n \t\t}\n@@ -1911,8 +1911,8 @@ static int rss_enable(struct pmd_internals *pmd,\n \t\t\treturn -1;\n \t\terr = tap_nl_recv_ack(pmd->nlsk_fd);\n \t\tif (err < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"Kernel refused TC filter rule creation (%d): %s\\n\",\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"Kernel refused TC filter rule creation (%d): %s\",\n \t\t\t\terrno, strerror(errno));\n \t\t\treturn err;\n \t\t}\n@@ -2066,8 +2066,8 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,\n \t\t\t\t&flow->key_idx, &rss_entry);\n \n \tif (err) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Failed to update BPF map entry #%u (%d): %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Failed to update BPF map entry #%u (%d): %s\",\n \t\t\tflow->key_idx, errno, strerror(errno));\n \t\trte_flow_error_set(\n \t\t\terror, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,\n@@ -2085,8 +2085,8 @@ static int rss_add_actions(struct rte_flow *flow, struct pmd_internals *pmd,\n \tflow->bpf_fd[SEC_L3_L4] =\n \t\ttap_flow_bpf_calc_l3_l4_hash(flow->key_idx, pmd->map_fd);\n \tif (flow->bpf_fd[SEC_L3_L4] < 0) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Failed to load BPF section %s (%d): %s\\n\",\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Failed to load BPF section %s (%d): %s\",\n \t\t\t\tsec_name[SEC_L3_L4], errno, strerror(errno));\n \t\trte_flow_error_set(\n \t\t\terror, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, NULL,\n@@ -2147,9 +2147,8 @@ tap_dev_filter_ctrl(struct rte_eth_dev *dev,\n \t\t*(const void **)arg = &tap_flow_ops;\n \t\treturn 0;\n \tdefault:\n-\t\tRTE_LOG(ERR, PMD, \"%p: filter type (%d) not supported\\n\",\n-\t\t\t(void *)dev, filter_type);\n+\t\tTAP_LOG(ERR, \"%p: filter type (%d) not supported\",\n+\t\t\tdev, filter_type);\n \t}\n \treturn -EINVAL;\n }\n-\ndiff --git a/drivers/net/tap/tap_intr.c b/drivers/net/tap/tap_intr.c\nindex 8283ecb3db41..fc590181fca7 100644\n--- a/drivers/net/tap/tap_intr.c\n+++ b/drivers/net/tap/tap_intr.c\n@@ -62,7 +62,7 @@ tap_rx_intr_vec_install(struct rte_eth_dev *dev)\n \tintr_handle->intr_vec = malloc(sizeof(intr_handle->intr_vec[rxqs_n]));\n \tif (intr_handle->intr_vec == NULL) {\n \t\trte_errno = ENOMEM;\n-\t\tRTE_LOG(ERR, PMD,\n+\t\tTAP_LOG(ERR,\n \t\t\t\"failed to allocate memory for interrupt vector,\"\n \t\t\t\" Rx interrupts will not be supported\");\n \t\treturn -rte_errno;\ndiff --git a/drivers/net/tap/tap_log.h b/drivers/net/tap/tap_log.h\nnew file mode 100644\nindex 000000000000..fa06843a4c41\n--- /dev/null\n+++ b/drivers/net/tap/tap_log.h\n@@ -0,0 +1,10 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright 2017 6WIND S.A.\n+ * Copyright 2017 Mellanox Technologies, Ltd\n+ */\n+\n+extern int tap_logtype;\n+\n+#define TAP_LOG(level, fmt, args...) \\\n+\trte_log(RTE_LOG_ ## level, tap_logtype, \"%s(): \" fmt \"\\n\", \\\n+\t\t__func__, ## args)\ndiff --git a/drivers/net/tap/tap_netlink.c b/drivers/net/tap/tap_netlink.c\nindex 8273ac031b4e..6cb510092218 100644\n--- a/drivers/net/tap/tap_netlink.c\n+++ b/drivers/net/tap/tap_netlink.c\n@@ -13,6 +13,7 @@\n #include <rte_malloc.h>\n #include <tap_netlink.h>\n #include <rte_random.h>\n+#include \"tap_log.h\"\n \n /* Must be quite large to support dumping a huge list of QDISC or filters. */\n #define BUF_SIZE (32 * 1024) /* Size of the buffer to receive kernel messages */\n@@ -45,19 +46,19 @@ tap_nl_init(uint32_t nl_groups)\n \n \tfd = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE);\n \tif (fd < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"Unable to create a netlink socket\\n\");\n+\t\tTAP_LOG(ERR, \"Unable to create a netlink socket\");\n \t\treturn -1;\n \t}\n \tif (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &sndbuf_size, sizeof(int))) {\n-\t\tRTE_LOG(ERR, PMD, \"Unable to set socket buffer send size\\n\");\n+\t\tTAP_LOG(ERR, \"Unable to set socket buffer send size\");\n \t\treturn -1;\n \t}\n \tif (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &rcvbuf_size, sizeof(int))) {\n-\t\tRTE_LOG(ERR, PMD, \"Unable to set socket buffer receive size\\n\");\n+\t\tTAP_LOG(ERR, \"Unable to set socket buffer receive size\");\n \t\treturn -1;\n \t}\n \tif (bind(fd, (struct sockaddr *)&local, sizeof(local)) < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"Unable to bind to the netlink socket\\n\");\n+\t\tTAP_LOG(ERR, \"Unable to bind to the netlink socket\");\n \t\treturn -1;\n \t}\n \treturn fd;\n@@ -76,7 +77,7 @@ int\n tap_nl_final(int nlsk_fd)\n {\n \tif (close(nlsk_fd)) {\n-\t\tRTE_LOG(ERR, PMD, \"Failed to close netlink socket: %s (%d)\\n\",\n+\t\tTAP_LOG(ERR, \"Failed to close netlink socket: %s (%d)\",\n \t\t\tstrerror(errno), errno);\n \t\treturn -1;\n \t}\n@@ -117,7 +118,7 @@ tap_nl_send(int nlsk_fd, struct nlmsghdr *nh)\n \tnh->nlmsg_seq = (uint32_t)rte_rand();\n \tsend_bytes = sendmsg(nlsk_fd, &msg, 0);\n \tif (send_bytes < 0) {\n-\t\tRTE_LOG(ERR, PMD, \"Failed to send netlink message: %s (%d)\\n\",\n+\t\tTAP_LOG(ERR, \"Failed to send netlink message: %s (%d)\",\n \t\t\tstrerror(errno), errno);\n \t\treturn -1;\n \t}\n@@ -300,9 +301,8 @@ tap_nlattr_nested_start(struct nlmsg *msg, uint16_t type)\n \n \ttail = rte_zmalloc(NULL, sizeof(struct nested_tail), 0);\n \tif (!tail) {\n-\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\"Couldn't allocate memory for nested netlink\"\n-\t\t\t\" attribute\\n\");\n+\t\tTAP_LOG(ERR,\n+\t\t\t\"Couldn't allocate memory for nested netlink attribute\");\n \t\treturn -1;\n \t}\n \ndiff --git a/drivers/net/tap/tap_tcmsgs.c b/drivers/net/tap/tap_tcmsgs.c\nindex 8da6ccc86df0..3c9d0366725e 100644\n--- a/drivers/net/tap/tap_tcmsgs.c\n+++ b/drivers/net/tap/tap_tcmsgs.c\n@@ -10,6 +10,7 @@\n \n #include <rte_log.h>\n #include <tap_tcmsgs.h>\n+#include \"tap_log.h\"\n \n struct qdisc {\n \tuint32_t handle;\n@@ -81,8 +82,8 @@ qdisc_del(int nlsk_fd, uint16_t ifindex, struct qdisc *qinfo)\n \tif (!nlsk_fd) {\n \t\tfd = tap_nl_init(0);\n \t\tif (fd < 0) {\n-\t\t\tRTE_LOG(ERR, PMD,\n-\t\t\t\t\"Could not delete QDISC: null netlink socket\\n\");\n+\t\t\tTAP_LOG(ERR,\n+\t\t\t\t\"Could not delete QDISC: null netlink socket\");\n \t\t\treturn -1;\n \t\t}\n \t} else {\n@@ -261,7 +262,7 @@ qdisc_create_multiq(int nlsk_fd, uint16_t ifindex)\n \n \terr = qdisc_add_multiq(nlsk_fd, ifindex);\n \tif (err < 0 && errno != -EEXIST) {\n-\t\tRTE_LOG(ERR, PMD, \"Could not add multiq qdisc (%d): %s\\n\",\n+\t\tTAP_LOG(ERR, \"Could not add multiq qdisc (%d): %s\",\n \t\t\terrno, strerror(errno));\n \t\treturn -1;\n \t}\n@@ -287,7 +288,7 @@ qdisc_create_ingress(int nlsk_fd, uint16_t ifindex)\n \n \terr = qdisc_add_ingress(nlsk_fd, ifindex);\n \tif (err < 0 && errno != -EEXIST) {\n-\t\tRTE_LOG(ERR, PMD, \"Could not add ingress qdisc (%d): %s\\n\",\n+\t\tTAP_LOG(ERR, \"Could not add ingress qdisc (%d): %s\",\n \t\t\terrno, strerror(errno));\n \t\treturn -1;\n \t}\n",
    "prefixes": [
        "dpdk-dev",
        "next",
        "01/10"
    ]
}