Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/58000/?format=api
http://patches.dpdk.org/api/patches/58000/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20190827070730.11206-6-sachin.saxena@nxp.com/", "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": "<20190827070730.11206-6-sachin.saxena@nxp.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20190827070730.11206-6-sachin.saxena@nxp.com", "date": "2019-08-27T07:07:05", "name": "[v1,05/30] net/dpaa: support Rx interrupt handler", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "3d559efb586f6c66bda84a2febc292bf824810cd", "submitter": { "id": 1054, "url": "http://patches.dpdk.org/api/people/1054/?format=api", "name": "Sachin Saxena", "email": "sachin.saxena@nxp.com" }, "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/20190827070730.11206-6-sachin.saxena@nxp.com/mbox/", "series": [ { "id": 6130, "url": "http://patches.dpdk.org/api/series/6130/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=6130", "date": "2019-08-27T07:07:00", "name": "Enhancements and fixes in NXP dpaax drivers and fsl-mc bus", "version": 1, "mbox": "http://patches.dpdk.org/series/6130/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/58000/comments/", "check": "fail", "checks": "http://patches.dpdk.org/api/patches/58000/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 DF3971BFFC;\n\tTue, 27 Aug 2019 09:09:28 +0200 (CEST)", "from inva021.nxp.com (inva021.nxp.com [92.121.34.21])\n\tby dpdk.org (Postfix) with ESMTP id 8906B1BF9A\n\tfor <dev@dpdk.org>; Tue, 27 Aug 2019 09:09:17 +0200 (CEST)", "from inva021.nxp.com (localhost [127.0.0.1])\n\tby inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 63E522001BC;\n\tTue, 27 Aug 2019 09:09:17 +0200 (CEST)", "from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com\n\t[165.114.16.14])\n\tby inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 283122005C9;\n\tTue, 27 Aug 2019 09:09:15 +0200 (CEST)", "from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net\n\t[10.232.133.63])\n\tby invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 9EB3C4031D;\n\tTue, 27 Aug 2019 15:09:11 +0800 (SGT)" ], "From": "Sachin Saxena <sachin.saxena@nxp.com>", "To": "dev@dpdk.org", "Cc": "thomas@monjalon.net,\n\tNipun Gupta <nipun.gupta@nxp.com>", "Date": "Tue, 27 Aug 2019 12:37:05 +0530", "Message-Id": "<20190827070730.11206-6-sachin.saxena@nxp.com>", "X-Mailer": "git-send-email 2.17.1", "In-Reply-To": "<20190827070730.11206-1-sachin.saxena@nxp.com>", "References": "<20190827070730.11206-1-sachin.saxena@nxp.com>", "X-Virus-Scanned": "ClamAV using ClamSMTP", "Subject": "[dpdk-dev] [PATCH v1 05/30] net/dpaa: support Rx interrupt handler", "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://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "From: Nipun Gupta <nipun.gupta@nxp.com>\n\nThis patch adds interrupt handler support for\nthe ethernet devices which are configured with\na dedicated portal for packet Rx\n(i.e. for FQ's in push mode).\n\nSigned-off-by: Nipun Gupta <nipun.gupta@nxp.com>\n---\n drivers/bus/dpaa/base/qbman/qman_driver.c | 3 ++-\n drivers/bus/dpaa/include/fsl_qman.h | 18 +++++++++++++-\n drivers/bus/dpaa/include/fsl_usd.h | 2 +-\n drivers/bus/dpaa/rte_dpaa_bus.h | 1 +\n drivers/net/dpaa/dpaa_ethdev.c | 29 +++++++++++++++++++++--\n 5 files changed, 48 insertions(+), 5 deletions(-)", "diff": "diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c\nindex 06ed814e1..acd003143 100644\n--- a/drivers/bus/dpaa/base/qbman/qman_driver.c\n+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c\n@@ -121,7 +121,7 @@ void qman_thread_irq(void)\n \tout_be32(qpcfg.addr_virt[DPAA_PORTAL_CI] + 0x36C0, 0);\n }\n \n-struct qman_portal *fsl_qman_fq_portal_create(void)\n+struct qman_portal *fsl_qman_fq_portal_create(int *fd)\n {\n \tstruct qman_portal *portal = NULL;\n \tstruct qm_portal_config *q_pcfg;\n@@ -171,6 +171,7 @@ struct qman_portal *fsl_qman_fq_portal_create(void)\n \tirq_map.portal_cinh = q_map.addr.cinh;\n \tprocess_portal_irq_map(q_fd, &irq_map);\n \n+\t*fd = q_fd;\n \treturn portal;\n err:\n \tif (portal)\ndiff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h\nindex 5f13a5544..064b65aed 100644\n--- a/drivers/bus/dpaa/include/fsl_qman.h\n+++ b/drivers/bus/dpaa/include/fsl_qman.h\n@@ -1215,6 +1215,9 @@ struct qman_fq {\n \tstruct qman_fq_cb cb;\n \n \tu32 fqid_le;\n+\tu32 fqid;\n+\n+\tint q_fd;\n \tu16 ch_id;\n \tu8 cgr_groupid;\n \tu8 is_static:4;\n@@ -1231,7 +1234,6 @@ struct qman_fq {\n \tvolatile unsigned long flags;\n \n \tenum qman_fq_state state;\n-\tu32 fqid;\n \tspinlock_t fqlock;\n \n \tstruct rb_node node;\n@@ -1333,6 +1335,13 @@ u32 qman_portal_dequeue(struct rte_event ev[], unsigned int poll_limit,\n */\n int qman_irqsource_add(u32 bits);\n \n+/**\n+ * qman_fq_portal_irqsource_add - samilar to qman_irqsource_add, but it\n+ * takes portal (fq specific) as input rather than using the thread affined\n+ * portal.\n+ */\n+int qman_fq_portal_irqsource_add(struct qman_portal *p, u32 bits);\n+\n /**\n * qman_irqsource_remove - remove processing sources from being interrupt-driven\n * @bits: bitmask of QM_PIRQ_**I processing sources\n@@ -1343,6 +1352,13 @@ int qman_irqsource_add(u32 bits);\n */\n int qman_irqsource_remove(u32 bits);\n \n+/**\n+ * qman_fq_portal_irqsource_remove - similar to qman_irqsource_remove, but it\n+ * takes portal (fq specific) as input rather than using the thread affined\n+ * portal.\n+ */\n+int qman_fq_portal_irqsource_remove(struct qman_portal *p, u32 bits);\n+\n /**\n * qman_affine_channel - return the channel ID of an portal\n * @cpu: the cpu whose affine portal is the subject of the query\ndiff --git a/drivers/bus/dpaa/include/fsl_usd.h b/drivers/bus/dpaa/include/fsl_usd.h\nindex ea7be38af..a407e2b22 100644\n--- a/drivers/bus/dpaa/include/fsl_usd.h\n+++ b/drivers/bus/dpaa/include/fsl_usd.h\n@@ -75,7 +75,7 @@ int qman_global_init(void);\n int bman_global_init(void);\n \n /* Direct portal create and destroy */\n-struct qman_portal *fsl_qman_fq_portal_create(void);\n+struct qman_portal *fsl_qman_fq_portal_create(int *fd);\n int fsl_qman_fq_portal_destroy(struct qman_portal *qp);\n int fsl_qman_fq_portal_init(struct qman_portal *qp);\n \ndiff --git a/drivers/bus/dpaa/rte_dpaa_bus.h b/drivers/bus/dpaa/rte_dpaa_bus.h\nindex 554a56f2e..9601aebdd 100644\n--- a/drivers/bus/dpaa/rte_dpaa_bus.h\n+++ b/drivers/bus/dpaa/rte_dpaa_bus.h\n@@ -75,6 +75,7 @@ struct rte_dpaa_device {\n \t};\n \tstruct rte_dpaa_driver *driver;\n \tstruct dpaa_device_id id;\n+\tstruct rte_intr_handle intr_handle;\n \tenum rte_dpaa_type device_type; /**< Ethernet or crypto type device */\n \tchar name[RTE_ETH_NAME_MAX_LEN];\n };\ndiff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c\nindex 4e2c9471e..1934f85ae 100644\n--- a/drivers/net/dpaa/dpaa_ethdev.c\n+++ b/drivers/net/dpaa/dpaa_ethdev.c\n@@ -628,8 +628,10 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \t\tfman_if_get_sg_enable(dpaa_intf->fif),\n \t\tdev->data->dev_conf.rxmode.max_rx_pkt_len);\n \t/* checking if push mode only, no error check for now */\n-\tif (dpaa_push_mode_max_queue > dpaa_push_queue_idx) {\n+\tif (!rxq->is_static &&\n+\t dpaa_push_mode_max_queue > dpaa_push_queue_idx) {\n \t\tstruct qman_portal *qp;\n+\t\tint q_fd;\n \n \t\tdpaa_push_queue_idx++;\n \t\topts.we_mask = QM_INITFQ_WE_FQCTRL | QM_INITFQ_WE_CONTEXTA;\n@@ -676,12 +678,35 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \t\trxq->is_static = true;\n \n \t\t/* Allocate qman specific portals */\n-\t\tqp = fsl_qman_fq_portal_create();\n+\t\tqp = fsl_qman_fq_portal_create(&q_fd);\n \t\tif (!qp) {\n \t\t\tDPAA_PMD_ERR(\"Unable to alloc fq portal\");\n \t\t\treturn -1;\n \t\t}\n \t\trxq->qp = qp;\n+\n+\t\t/* Set up the device interrupt handler */\n+\t\tif (!dev->intr_handle) {\n+\t\t\tstruct rte_dpaa_device *dpaa_dev;\n+\t\t\tstruct rte_device *rdev = dev->device;\n+\n+\t\t\tdpaa_dev = container_of(rdev, struct rte_dpaa_device,\n+\t\t\t\t\t\tdevice);\n+\t\t\tdev->intr_handle = &dpaa_dev->intr_handle;\n+\t\t\tdev->intr_handle->intr_vec = rte_zmalloc(NULL,\n+\t\t\t\t\tdpaa_push_mode_max_queue, 0);\n+\t\t\tif (!dev->intr_handle->intr_vec) {\n+\t\t\t\tDPAA_PMD_ERR(\"intr_vec alloc failed\");\n+\t\t\t\treturn -ENOMEM;\n+\t\t\t}\n+\t\t\tdev->intr_handle->nb_efd = dpaa_push_mode_max_queue;\n+\t\t\tdev->intr_handle->max_intr = dpaa_push_mode_max_queue;\n+\t\t}\n+\n+\t\tdev->intr_handle->type = RTE_INTR_HANDLE_EXT;\n+\t\tdev->intr_handle->intr_vec[queue_idx] = queue_idx + 1;\n+\t\tdev->intr_handle->efds[queue_idx] = q_fd;\n+\t\trxq->q_fd = q_fd;\n \t}\n \trxq->bp_array = rte_dpaa_bpid_info;\n \tdev->data->rx_queues[queue_idx] = rxq;\n", "prefixes": [ "v1", "05/30" ] }{ "id": 58000, "url": "