get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 28374,
    "url": "http://patches.dpdk.org/api/patches/28374/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1504613046-7259-5-git-send-email-markus.theil@tu-ilmenau.de/",
    "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": "<1504613046-7259-5-git-send-email-markus.theil@tu-ilmenau.de>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1504613046-7259-5-git-send-email-markus.theil@tu-ilmenau.de",
    "date": "2017-09-05T12:04:05",
    "name": "[dpdk-dev,v7,5/6] igb_uio: use kernel functions for masking MSI-X",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b79895edb804aa1c33b36c6c00953504e7f08432",
    "submitter": {
        "id": 747,
        "url": "http://patches.dpdk.org/api/people/747/?format=api",
        "name": "Markus Theil",
        "email": "markus.theil@tu-ilmenau.de"
    },
    "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/1504613046-7259-5-git-send-email-markus.theil@tu-ilmenau.de/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/28374/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/28374/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 6DAD67CCF;\n\tTue,  5 Sep 2017 14:04:20 +0200 (CEST)",
            "from smail.rz.tu-ilmenau.de (smail.rz.tu-ilmenau.de\n\t[141.24.186.67]) by dpdk.org (Postfix) with ESMTP id 5C75B3798\n\tfor <dev@dpdk.org>; Tue,  5 Sep 2017 14:04:11 +0200 (CEST)",
            "from thunderstorm.prakinf.tu-ilmenau.de\n\t(thunderstorm.prakinf.tu-ilmenau.de [141.24.212.108])\n\tby smail.rz.tu-ilmenau.de (Postfix) with ESMTPA id 3A75058006E;\n\tTue,  5 Sep 2017 14:04:11 +0200 (CEST)"
        ],
        "From": "Markus Theil <markus.theil@tu-ilmenau.de>",
        "To": "dev@dpdk.org",
        "Cc": "ferruh.yigit@intel.com, stephen@networkplumber.org,\n\tMarkus Theil <markus.theil@tu-ilmenau.de>",
        "Date": "Tue,  5 Sep 2017 14:04:05 +0200",
        "Message-Id": "<1504613046-7259-5-git-send-email-markus.theil@tu-ilmenau.de>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1504613046-7259-1-git-send-email-markus.theil@tu-ilmenau.de>",
        "References": "<1503336825-7700-1-git-send-email-markus.theil@tu-ilmenau.de>\n\t<1504613046-7259-1-git-send-email-markus.theil@tu-ilmenau.de>",
        "Subject": "[dpdk-dev] [PATCH v7 5/6] igb_uio: use kernel functions for masking\n\tMSI-X",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <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": "This patch removes the custom MSI-X mask/unmask code and\nuses already existing kernel functions.\n\nSigned-off-by: Markus Theil <markus.theil@tu-ilmenau.de>\n---\n lib/librte_eal/linuxapp/igb_uio/compat.h  | 26 +++++-----------\n lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 51 ++++++++++++-------------------\n 2 files changed, 28 insertions(+), 49 deletions(-)",
    "diff": "diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/lib/librte_eal/linuxapp/igb_uio/compat.h\nindex 3825933..67a7ab3 100644\n--- a/lib/librte_eal/linuxapp/igb_uio/compat.h\n+++ b/lib/librte_eal/linuxapp/igb_uio/compat.h\n@@ -15,24 +15,6 @@\n #define HAVE_PTE_MASK_PAGE_IOMAP\n #endif\n \n-#ifndef PCI_MSIX_ENTRY_SIZE\n-#define PCI_MSIX_ENTRY_SIZE             16\n-#define  PCI_MSIX_ENTRY_LOWER_ADDR      0\n-#define  PCI_MSIX_ENTRY_UPPER_ADDR      4\n-#define  PCI_MSIX_ENTRY_DATA            8\n-#define  PCI_MSIX_ENTRY_VECTOR_CTRL     12\n-#define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1\n-#endif\n-\n-/*\n- * for kernels < 2.6.38 and backported patch that moves MSI-X entry definition\n- * to pci_regs.h Those kernels has PCI_MSIX_ENTRY_SIZE defined but not\n- * PCI_MSIX_ENTRY_CTRL_MASKBIT\n- */\n-#ifndef PCI_MSIX_ENTRY_CTRL_MASKBIT\n-#define PCI_MSIX_ENTRY_CTRL_MASKBIT    1\n-#endif\n-\n #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \\\n \t(!(defined(RHEL_RELEASE_CODE) && \\\n \t RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(5, 9)))\n@@ -127,3 +109,11 @@ static bool pci_check_and_mask_intx(struct pci_dev *pdev)\n #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)\n #define HAVE_ALLOC_IRQ_VECTORS 1\n #endif\n+\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)\n+#define HAVE_PCI_MSI_MASK_IRQ 1\n+#endif\n+\n+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)\n+#define HAVE_IRQ_DATA 1\n+#endif\ndiff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c\nindex c570eed..e4ef817 100644\n--- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c\n+++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c\n@@ -91,27 +91,6 @@ static struct attribute *dev_attrs[] = {\n static const struct attribute_group dev_attr_grp = {\n \t.attrs = dev_attrs,\n };\n-/*\n- * It masks the msix on/off of generating MSI-X messages.\n- */\n-static void\n-igbuio_msix_mask_irq(struct msi_desc *desc, int32_t state)\n-{\n-\tu32 mask_bits = desc->masked;\n-\tunsigned offset = desc->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE +\n-\t\t\t\t\t\tPCI_MSIX_ENTRY_VECTOR_CTRL;\n-\n-\tif (state != 0)\n-\t\tmask_bits &= ~PCI_MSIX_ENTRY_CTRL_MASKBIT;\n-\telse\n-\t\tmask_bits |= PCI_MSIX_ENTRY_CTRL_MASKBIT;\n-\n-\tif (mask_bits != desc->masked) {\n-\t\twritel(mask_bits, desc->mask_base + offset);\n-\t\treadl(desc->mask_base);\n-\t\tdesc->masked = mask_bits;\n-\t}\n-}\n \n /**\n  * This is the irqcontrol callback to be registered to uio_info.\n@@ -132,21 +111,31 @@ igbuio_pci_irqcontrol(struct uio_info *info, s32 irq_state)\n \tstruct rte_uio_pci_dev *udev = info->priv;\n \tstruct pci_dev *pdev = udev->pdev;\n \n-\tpci_cfg_access_lock(pdev);\n-\tif (udev->mode == RTE_INTR_MODE_LEGACY)\n-\t\tpci_intx(pdev, !!irq_state);\n+#ifdef HAVE_IRQ_DATA\n+\tstruct irq_data *irq = irq_get_irq_data(udev->info.irq);\n+#else\n+\tunsigned int irq = udev->info.irq;\n+#endif\n \n-\telse if (udev->mode == RTE_INTR_MODE_MSIX) {\n-\t\tstruct msi_desc *desc;\n+\tpci_cfg_access_lock(pdev);\n \n-#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0))\n-\t\tlist_for_each_entry(desc, &pdev->msi_list, list)\n-\t\t\tigbuio_msix_mask_irq(desc, irq_state);\n+\tif (udev->mode == RTE_INTR_MODE_MSIX) {\n+#ifdef HAVE_PCI_MSI_MASK_IRQ\n+\t\tif (irq_state == 1)\n+\t\t\tpci_msi_unmask_irq(irq);\n+\t\telse\n+\t\t\tpci_msi_mask_irq(irq);\n #else\n-\t\tlist_for_each_entry(desc, &pdev->dev.msi_list, list)\n-\t\t\tigbuio_msix_mask_irq(desc, irq_state);\n+\t\tif (irq_state == 1)\n+\t\t\tunmask_msi_irq(irq);\n+\t\telse\n+\t\t\tmask_msi_irq(irq);\n #endif\n \t}\n+\n+\tif (udev->mode == RTE_INTR_MODE_LEGACY)\n+\t\tpci_intx(pdev, !!irq_state);\n+\n \tpci_cfg_access_unlock(pdev);\n \n \treturn 0;\n",
    "prefixes": [
        "dpdk-dev",
        "v7",
        "5/6"
    ]
}