Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2766/?format=api
https://patches.dpdk.org/api/patches/2766/?format=api", "web_url": "https://patches.dpdk.org/project/dpdk/patch/1422594454-11045-4-git-send-email-jing.d.chen@intel.com/", "project": { "id": 1, "url": "https://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": "<1422594454-11045-4-git-send-email-jing.d.chen@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1422594454-11045-4-git-send-email-jing.d.chen@intel.com", "date": "2015-01-30T05:07:19", "name": "[dpdk-dev,03/18] fm10k: Add empty fm10k files", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "37a63a7ee1cd59a4369814c42825c3dc58cd62bb", "submitter": { "id": 40, "url": "https://patches.dpdk.org/api/people/40/?format=api", "name": "Chen, Jing D", "email": "jing.d.chen@intel.com" }, "delegate": null, "mbox": "https://patches.dpdk.org/project/dpdk/patch/1422594454-11045-4-git-send-email-jing.d.chen@intel.com/mbox/", "series": [], "comments": "https://patches.dpdk.org/api/patches/2766/comments/", "check": "pending", "checks": "https://patches.dpdk.org/api/patches/2766/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id AFADD5AAA;\n\tFri, 30 Jan 2015 06:08:39 +0100 (CET)", "from mga11.intel.com (mga11.intel.com [192.55.52.93])\n\tby dpdk.org (Postfix) with ESMTP id B9A5B255\n\tfor <dev@dpdk.org>; Fri, 30 Jan 2015 06:08:23 +0100 (CET)", "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga102.fm.intel.com with ESMTP; 29 Jan 2015 21:08:22 -0800", "from shvmail01.sh.intel.com ([10.239.29.42])\n\tby fmsmga001.fm.intel.com with ESMTP; 29 Jan 2015 21:08:21 -0800", "from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com\n\t[10.239.29.90])\n\tby shvmail01.sh.intel.com with ESMTP id t0U58BSg013933;\n\tFri, 30 Jan 2015 13:08:11 +0800", "from shecgisg003.sh.intel.com (localhost [127.0.0.1])\n\tby shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP\n\tid t0U58ARP011100; Fri, 30 Jan 2015 13:08:12 +0800", "(from jingche2@localhost)\n\tby shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id t0U58Aj0011096; \n\tFri, 30 Jan 2015 13:08:10 +0800" ], "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.09,490,1418112000\"; d=\"scan'208\";a=\"659018889\"", "From": "\"Chen Jing D(Mark)\" <jing.d.chen@intel.com>", "To": "dev@dpdk.org", "Date": "Fri, 30 Jan 2015 13:07:19 +0800", "Message-Id": "<1422594454-11045-4-git-send-email-jing.d.chen@intel.com>", "X-Mailer": "git-send-email 1.7.12.2", "In-Reply-To": "<1422594454-11045-1-git-send-email-jing.d.chen@intel.com>", "References": "<1422594454-11045-1-git-send-email-jing.d.chen@intel.com>", "Subject": "[dpdk-dev] [PATCH 03/18] fm10k: Add empty fm10k files", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "patches and discussions about DPDK <dev.dpdk.org>", "List-Unsubscribe": "<http://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": "<http://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": "From: Jeff Shaw <jeffrey.b.shaw@intel.com>\n\nDefine macros and basic data structure.\nDefine rte_log wrapper functions.\n\nSigned-off-by: Jeff Shaw <jeffrey.b.shaw@intel.com>\nSigned-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>\n---\n lib/librte_pmd_fm10k/Makefile | 96 ++++++++++++++++\n lib/librte_pmd_fm10k/fm10k.h | 224 +++++++++++++++++++++++++++++++++++++\n lib/librte_pmd_fm10k/fm10k_logs.h | 66 +++++++++++\n 3 files changed, 386 insertions(+), 0 deletions(-)\n create mode 100644 lib/librte_pmd_fm10k/Makefile\n create mode 100644 lib/librte_pmd_fm10k/fm10k.h\n create mode 100644 lib/librte_pmd_fm10k/fm10k_ethdev.c\n create mode 100644 lib/librte_pmd_fm10k/fm10k_logs.h\n create mode 100644 lib/librte_pmd_fm10k/fm10k_rxtx.c\n\ndiff --git a/lib/librte_pmd_fm10k/fm10k_rxtx.c b/lib/librte_pmd_fm10k/fm10k_rxtx.c\nnew file mode 100644\nindex 0000000..e69de29", "diff": "diff --git a/lib/librte_pmd_fm10k/Makefile b/lib/librte_pmd_fm10k/Makefile\nnew file mode 100644\nindex 0000000..3d76387\n--- /dev/null\n+++ b/lib/librte_pmd_fm10k/Makefile\n@@ -0,0 +1,96 @@\n+# BSD LICENSE\n+#\n+# Copyright(c) 2013-2014 Intel Corporation. All rights reserved.\n+# All rights reserved.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions\n+# are met:\n+#\n+# * Redistributions of source code must retain the above copyright\n+# notice, this list of conditions and the following disclaimer.\n+# * Redistributions in binary form must reproduce the above copyright\n+# notice, this list of conditions and the following disclaimer in\n+# the documentation and/or other materials provided with the\n+# distribution.\n+# * Neither the name of Intel Corporation nor the names of its\n+# contributors may be used to endorse or promote products derived\n+# from this software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+# \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+\n+include $(RTE_SDK)/mk/rte.vars.mk\n+\n+#\n+# library name\n+#\n+LIB = librte_pmd_fm10k.a\n+\n+CFLAGS += -O3\n+CFLAGS += $(WERROR_FLAGS)\n+\n+ifeq ($(CC), icc)\n+#\n+# CFLAGS for icc\n+#\n+CFLAGS_BASE_DRIVER = -wd174 -wd593 -wd869 -wd981 -wd2259\n+\n+else ifeq ($(CC), clang)\n+#\n+## CFLAGS for clang\n+#\n+CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value\n+CFLAGS_BASE_DRIVER += -Wno-strict-aliasing -Wno-format-extra-args\n+CFLAGS_BASE_DRIVER += -Wno-unused-variable -Wno-unused-but-set-variable\n+CFLAGS_BASE_DRIVER += -Wno-missing-field-initializers\n+\n+else\n+#\n+# CFLAGS for gcc\n+#\n+ifneq ($(shell test $(GCC_MAJOR_VERSION) -le 4 -a $(GCC_MINOR_VERSION) -le 3 && echo 1), 1)\n+CFLAGS += -Wno-deprecated\n+endif\n+CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value\n+CFLAGS_BASE_DRIVER += -Wno-strict-aliasing -Wno-format-extra-args\n+CFLAGS_BASE_DRIVER += -Wno-unused-variable -Wno-unused-but-set-variable\n+CFLAGS_BASE_DRIVER += -Wno-missing-field-initializers\n+endif\n+\n+#\n+# Add extra flags for base driver source files to disable warnings in them\n+#\n+BASE_DRIVER_OBJS=$(patsubst %.c,%.o,$(notdir $(wildcard $(RTE_SDK)/lib/librte_pmd_fm10k/SHARED/*.c)))\n+$(foreach obj, $(BASE_DRIVER_OBJS), $(eval CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER)))\n+\n+VPATH += $(RTE_SDK)/lib/librte_pmd_fm10k/SHARED\n+\n+#\n+# all source are stored in SRCS-y\n+#\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_ethdev.c\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_rxtx.c\n+\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_pf.c\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_tlv.c\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_common.c\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_mbx.c\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_vf.c\n+SRCS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += fm10k_api.c\n+\n+# this lib depends upon:\n+DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_eal lib/librte_ether\n+DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_mempool lib/librte_mbuf\n+DEPDIRS-$(CONFIG_RTE_LIBRTE_FM10K_PMD) += lib/librte_net lib/librte_malloc\n+\n+include $(RTE_SDK)/mk/rte.lib.mk\ndiff --git a/lib/librte_pmd_fm10k/fm10k.h b/lib/librte_pmd_fm10k/fm10k.h\nnew file mode 100644\nindex 0000000..9b2d3da\n--- /dev/null\n+++ b/lib/librte_pmd_fm10k/fm10k.h\n@@ -0,0 +1,224 @@\n+/*-\n+ * BSD LICENSE\n+ *\n+ * Copyright(c) 2013-2014 Intel Corporation. All rights reserved.\n+ * All rights reserved.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions\n+ * are met:\n+ *\n+ * * Redistributions of source code must retain the above copyright\n+ * notice, this list of conditions and the following disclaimer.\n+ * * Redistributions in binary form must reproduce the above copyright\n+ * notice, this list of conditions and the following disclaimer in\n+ * the documentation and/or other materials provided with the\n+ * distribution.\n+ * * Neither the name of Intel Corporation nor the names of its\n+ * contributors may be used to endorse or promote products derived\n+ * from this software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+#ifndef _FM10K_H_\n+#define _FM10K_H_\n+\n+#include <stdint.h>\n+#include <rte_mbuf.h>\n+#include <rte_mempool.h>\n+#include <rte_malloc.h>\n+#include <rte_spinlock.h>\n+#include \"fm10k_logs.h\"\n+#include \"SHARED/fm10k_type.h\"\n+\n+/* descriptor ring base addresses must be aligned to the following */\n+#define FM10K_ALIGN_RX_DESC 128\n+#define FM10K_ALIGN_TX_DESC 128\n+\n+/* The maximum packet size that FM10K supports */\n+#define FM10K_MAX_PKT_SIZE (15 * 1024)\n+\n+/* Minimum size of RX buffer FM10K supported */\n+#define FM10K_MIN_RX_BUF_SIZE 256\n+\n+/* The maximum of SRIOV VFs per port supported */\n+#define FM10K_MAX_VF_NUM 64\n+\n+/* number of descriptors must be a multiple of the following */\n+#define FM10K_MULT_RX_DESC FM10K_REQ_RX_DESCRIPTOR_MULTIPLE\n+#define FM10K_MULT_TX_DESC FM10K_REQ_TX_DESCRIPTOR_MULTIPLE\n+\n+/* maximum size of descriptor rings */\n+#define FM10K_MAX_RX_RING_SZ (512 * 1024)\n+#define FM10K_MAX_TX_RING_SZ (512 * 1024)\n+\n+/* minimum and maximum number of descriptors in a ring */\n+#define FM10K_MIN_RX_DESC 32\n+#define FM10K_MIN_TX_DESC 32\n+#define FM10K_MAX_RX_DESC (FM10K_MAX_RX_RING_SZ / sizeof(union fm10k_rx_desc))\n+#define FM10K_MAX_TX_DESC (FM10K_MAX_TX_RING_SZ / sizeof(struct fm10k_tx_desc))\n+\n+/*\n+ * byte aligment for HW RX data buffer\n+ * Datasheet requires RX buffer addresses shall either be 512-byte aligned or\n+ * be 8-byte aligned but without crossing host memory pages (4KB alignment\n+ * boundaries). Satisfy first option.\n+ */\n+#define FM10K_RX_DATABUF_ALIGN 512\n+\n+/*\n+ * threshold default, min, max, and divisor constraints\n+ * the configured values must satisfy the following:\n+ * MIN <= value <= MAX\n+ * DIV % value == 0\n+ */\n+#define FM10K_RX_FREE_THRESH_DEFAULT(rxq) 32\n+#define FM10K_RX_FREE_THRESH_MIN(rxq) 1\n+#define FM10K_RX_FREE_THRESH_MAX(rxq) ((rxq)->nb_desc - 1)\n+#define FM10K_RX_FREE_THRESH_DIV(rxq) ((rxq)->nb_desc)\n+\n+#define FM10K_TX_FREE_THRESH_DEFAULT(txq) 32\n+#define FM10K_TX_FREE_THRESH_MIN(txq) 1\n+#define FM10K_TX_FREE_THRESH_MAX(txq) ((txq)->nb_desc - 3)\n+#define FM10K_TX_FREE_THRESH_DIV(txq) 0\n+\n+#define FM10K_DEFAULT_RX_PTHRESH 8\n+#define FM10K_DEFAULT_RX_HTHRESH 8\n+#define FM10K_DEFAULT_RX_WTHRESH 0\n+\n+#define FM10K_DEFAULT_TX_PTHRESH 32\n+#define FM10K_DEFAULT_TX_HTHRESH 0\n+#define FM10K_DEFAULT_TX_WTHRESH 0\n+\n+#define FM10K_TX_RS_THRESH_DEFAULT(txq) 32\n+#define FM10K_TX_RS_THRESH_MIN(txq) 1\n+#define FM10K_TX_RS_THRESH_MAX(txq) \\\n+\tRTE_MIN(((txq)->nb_desc - 2), (txq)->free_thresh)\n+#define FM10K_TX_RS_THRESH_DIV(txq) ((txq)->nb_desc)\n+\n+#define FM10K_VLAN_TAG_SIZE 4\n+\n+struct fm10k_dev_info {\n+\tvolatile uint32_t enable;\n+\tvolatile uint32_t glort;\n+\t/* Protect the mailbox to avoid race condition */\n+\trte_spinlock_t mbx_lock;\n+};\n+\n+/*\n+ * Structure to store private data for each driver instance.\n+ */\n+struct fm10k_adapter {\n+\tstruct fm10k_hw hw;\n+\tstruct fm10k_hw_stats stats;\n+\tstruct fm10k_dev_info info;\n+};\n+\n+#define FM10K_DEV_PRIVATE_TO_HW(adapter) \\\n+\t(&((struct fm10k_adapter *)adapter)->hw)\n+\n+#define FM10K_DEV_PRIVATE_TO_STATS(adapter) \\\n+\t(&((struct fm10k_adapter *)adapter)->stats)\n+\n+#define FM10K_DEV_PRIVATE_TO_INFO(adapter) \\\n+\t(&((struct fm10k_adapter *)adapter)->info)\n+\n+#define FM10K_DEV_PRIVATE_TO_MBXLOCK(adapter) \\\n+\t(&(((struct fm10k_adapter *)adapter)->info.mbx_lock))\n+\n+struct fm10k_rx_queue {\n+\tstruct rte_mempool *mp;\n+\tstruct rte_mbuf **sw_ring;\n+\tvolatile union fm10k_rx_desc *hw_ring;\n+\tstruct rte_mbuf *pkt_first_seg; /**< First segment of current packet. */\n+\tstruct rte_mbuf *pkt_last_seg; /**< Last segment of current packet. */\n+\tuint64_t hw_ring_phys_addr;\n+\tuint16_t next_dd;\n+\tuint16_t next_alloc;\n+\tuint16_t next_trigger;\n+\tuint16_t alloc_thresh;\n+\tvolatile uint32_t *tail_ptr;\n+\tuint16_t nb_desc;\n+\tuint16_t queue_id;\n+\tuint8_t port_id;\n+\tuint8_t drop_en;\n+\tuint8_t rx_deferred_start; /** < don't start this queue in dev start. */\n+};\n+\n+/*\n+ * a FIFO is used to track which descriptors have their RS bit set for Tx\n+ * queues which are configured to allow multiple descriptors per packet\n+ */\n+struct fifo {\n+\tuint16_t *list;\n+\tuint16_t *head;\n+\tuint16_t *tail;\n+\tuint16_t *endp;\n+};\n+\n+struct fm10k_tx_queue {\n+\tstruct rte_mbuf **sw_ring;\n+\tstruct fm10k_tx_desc *hw_ring;\n+\tuint64_t hw_ring_phys_addr;\n+\tstruct fifo rs_tracker;\n+\tuint16_t last_free;\n+\tuint16_t next_free;\n+\tuint16_t nb_free;\n+\tuint16_t nb_used;\n+\tuint16_t free_trigger;\n+\tuint16_t free_thresh;\n+\tuint16_t rs_thresh;\n+\tvolatile uint32_t *tail_ptr;\n+\tuint16_t nb_desc;\n+\tuint8_t port_id;\n+\tuint8_t tx_deferred_start; /** < don't start this queue in dev start. */\n+\tuint16_t queue_id;\n+};\n+\n+#define MBUF_DMA_ADDR(mb) \\\n+\t((uint64_t) ((mb)->buf_physaddr + (mb)->data_off))\n+\n+/* enforce 512B alignment on default Rx DMA addresses */\n+#define MBUF_DMA_ADDR_DEFAULT(mb) \\\n+\t((uint64_t) RTE_ALIGN(((mb)->buf_physaddr + RTE_PKTMBUF_HEADROOM), 512))\n+\n+static inline void fifo_reset(struct fifo *fifo, uint32_t len)\n+{\n+\tfifo->head = fifo->tail = fifo->list;\n+\tfifo->endp = fifo->list + len;\n+}\n+\n+static inline void fifo_insert(struct fifo *fifo, uint16_t val)\n+{\n+\t*fifo->head = val;\n+\tif (++fifo->head == fifo->endp)\n+\t\tfifo->head = fifo->list;\n+}\n+\n+/* do not worry about list being empty since we only check it once we know\n+ * we have used enough descriptors to set the RS bit at least once */\n+static inline uint16_t fifo_peek(struct fifo *fifo)\n+{\n+\treturn *fifo->tail;\n+}\n+\n+static inline uint16_t fifo_remove(struct fifo *fifo)\n+{\n+\tuint16_t val;\n+\tval = *fifo->tail;\n+\tif (++fifo->tail == fifo->endp)\n+\t\tfifo->tail = fifo->list;\n+\treturn val;\n+}\n+#endif\ndiff --git a/lib/librte_pmd_fm10k/fm10k_ethdev.c b/lib/librte_pmd_fm10k/fm10k_ethdev.c\nnew file mode 100644\nindex 0000000..e69de29\ndiff --git a/lib/librte_pmd_fm10k/fm10k_logs.h b/lib/librte_pmd_fm10k/fm10k_logs.h\nnew file mode 100644\nindex 0000000..0b4cd24\n--- /dev/null\n+++ b/lib/librte_pmd_fm10k/fm10k_logs.h\n@@ -0,0 +1,66 @@\n+/*-\n+ * BSD LICENSE\n+ *\n+ * Copyright(c) 2013-2014 Intel Corporation. All rights reserved.\n+ * All rights reserved.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions\n+ * are met:\n+ *\n+ * * Redistributions of source code must retain the above copyright\n+ * notice, this list of conditions and the following disclaimer.\n+ * * Redistributions in binary form must reproduce the above copyright\n+ * notice, this list of conditions and the following disclaimer in\n+ * the documentation and/or other materials provided with the\n+ * distribution.\n+ * * Neither the name of Intel Corporation nor the names of its\n+ * contributors may be used to endorse or promote products derived\n+ * from this software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+#ifndef _FM10K_LOGS_H_\n+#define _FM10K_LOGS_H_\n+\n+#include <rte_log.h>\n+\n+#ifdef RTE_LIBRTE_FM10K_DEBUG\n+#define PMD_LOG(level, fmt, args...) \\\n+\tRTE_LOG(level, PMD, \"%s(): \" fmt \"\\n\", __func__, ## args)\n+#define PMD_FUNC_TRACE() PMD_LOG(DEBUG, \" >>\")\n+#else\n+#define PMD_LOG(level, fmt, args...) do { } while (0)\n+#define PMD_FUNC_TRACE() do { } while (0)\n+#endif\n+\n+#ifdef RTE_LIBRTE_FM10K_DEBUG_RX\n+#define PMD_LOG_RX(level, fmt, args...) \\\n+\tRTE_LOG(level, PMD, \"%s(): \" fmt \"\\n\", __func__, ## args)\n+#define PMD_FUNC_TRACE_RX() PMD_LOG_RX(DEBUG, \" >>\")\n+#else\n+#define PMD_LOG_RX(level, fmt, args...) do { } while (0)\n+#define PMD_FUNC_TRACE_RX() do { } while (0)\n+#endif\n+\n+#ifdef RTE_LIBRTE_FM10K_DEBUG_TX\n+#define PMD_LOG_TX(level, fmt, args...) \\\n+\tRTE_LOG(level, PMD, \"%s(): \" fmt \"\\n\", __func__, ## args)\n+#define PMD_FUNC_TRACE_TX() PMD_LOG_TX(DEBUG, \" >>\")\n+#else\n+#define PMD_LOG_TX(level, fmt, args...) do { } while (0)\n+#define PMD_FUNC_TRACE_TX() do { } while (0)\n+#endif\n+\n+#endif /* _FM10K_LOGS_H_ */\n", "prefixes": [ "dpdk-dev", "03/18" ] }{ "id": 2766, "url": "