get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 814673,
    "url": "http://patchwork.ozlabs.org/api/patches/814673/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20170917172415.32291-1-roman@advem.lv/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/projects/7/?format=api",
        "name": "Linux network development",
        "link_name": "netdev",
        "list_id": "netdev.vger.kernel.org",
        "list_email": "netdev@vger.kernel.org",
        "web_url": null,
        "scm_url": null,
        "webscm_url": null,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20170917172415.32291-1-roman@advem.lv>",
    "list_archive_url": null,
    "date": "2017-09-17T17:24:15",
    "name": "[net-next,v2,1/7] net: korina: don't use overflow and underflow interrupts",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "f674282708a2a53a86c894b3bedd41264c1e75ef",
    "submitter": {
        "id": 65345,
        "url": "http://patchwork.ozlabs.org/api/people/65345/?format=api",
        "name": "Roman Yeryomin",
        "email": "leroi.lists@gmail.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20170917172415.32291-1-roman@advem.lv/mbox/",
    "series": [
        {
            "id": 3532,
            "url": "http://patchwork.ozlabs.org/api/series/3532/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=3532",
            "date": "2017-09-17T17:23:53",
            "name": "korina: performance fixes and cleanup",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/3532/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/814673/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/814673/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<netdev-owner@vger.kernel.org>",
        "X-Original-To": "patchwork-incoming@ozlabs.org",
        "Delivered-To": "patchwork-incoming@ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"PfnUAZ95\"; dkim-atps=neutral"
        ],
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xwGGG1c5jz9s83\n\tfor <patchwork-incoming@ozlabs.org>;\n\tMon, 18 Sep 2017 03:24:22 +1000 (AEST)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1751537AbdIQRYS (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSun, 17 Sep 2017 13:24:18 -0400",
            "from mail-lf0-f67.google.com ([209.85.215.67]:37686 \"EHLO\n\tmail-lf0-f67.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1751391AbdIQRYR (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sun, 17 Sep 2017 13:24:17 -0400",
            "by mail-lf0-f67.google.com with SMTP id q132so3432736lfe.4\n\tfor <netdev@vger.kernel.org>; Sun, 17 Sep 2017 10:24:16 -0700 (PDT)",
            "from ubrain.corp.ubnt.com\n\t([2a02:16d8:105:4000:76d4:35ff:fe88:7631])\n\tby smtp.googlemail.com with ESMTPSA id\n\tl14sm1117048lfb.71.2017.09.17.10.24.14 for <netdev@vger.kernel.org>\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tSun, 17 Sep 2017 10:24:15 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025; h=from:to:subject:date:message-id;\n\tbh=elpiTWqNXsXnEmygjUAXof/plUJ4qVNMrlyod06PgXg=;\n\tb=PfnUAZ95+mLtD7X7tEPUsHRZo76eVbKnBJWVt+7sFsYYMOy7sJiWfQavRzPkuwVBLU\n\tSJh/YytEg/j5DUUtu5Sy/joG53cfAS93+1rAtH7bN9t5mhHqaTIdqcPqPBA1nQnNoe0r\n\tKTlEdymrGSrHlswGr4lEzisDraLJ6LyOjNdk4pqmnobDJOaV9+ltsbHdK/zee98pjKvN\n\tS2fbAhdw7EpgFpBGkMuPv+ckbaY8rDEiohVzLonBlokghzFOV9bIfnDnVYvKkNXEMH5Z\n\t5iqtxOCN9WraAcYgonHK2K1j/ZZia0XaMP6IfMfSrraKzORhKxBeodkGxLzQ1NZ1Gg+a\n\tr4Aw==",
        "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:subject:date:message-id;\n\tbh=elpiTWqNXsXnEmygjUAXof/plUJ4qVNMrlyod06PgXg=;\n\tb=KqoWQskLMLU0S12QvjBWl6M3xFwbDbhgGwij0T+D3ZawF9Rdxh49xy2L7Bels8miWT\n\tFVqm3wPcph8BAAxv06+ZJfZH+VmOPkVNbrW8d7KIueIkoLOeH/9W7d6ayjlrHiPT6GhU\n\tJtV9C63vTu6rh1GFZ1j9ZzqgpfxJeAAej5UMZQN9QkW+V2sSsRVhCVGMx6qgTiPes30/\n\tfLgElgNHOJ50DgpV/W07aF+OiyWdFWyaY51PFLkk83YnnzJjTTKkgM4IbRloBo37SwXK\n\teUQ06HCcl2GdUUjUz2Pm4Rb1aWy77JE8ftpJKWll91y856izaE57q3H79Wl+bxb/2okG\n\tk+xw==",
        "X-Gm-Message-State": "AHPjjUhcm10Rn/QrWpJla0j4UnQC74kwpBE1kN0nfyF+kkefeO6EVLHn\n\tG6ytvJYXEbQnAQMK",
        "X-Google-Smtp-Source": "AOwi7QA6JA9YY8TcbouGwDE6gh5BbL6+QLecM3F/6OUY3BsiMsHq1+SHJ5YtpguaXsfNqgEjmGqVfw==",
        "X-Received": "by 10.25.59.29 with SMTP id i29mr2196417lfa.22.1505669055813;\n\tSun, 17 Sep 2017 10:24:15 -0700 (PDT)",
        "From": "Roman Yeryomin <leroi.lists@gmail.com>",
        "X-Google-Original-From": "Roman Yeryomin <roman@advem.lv>",
        "To": "netdev <netdev@vger.kernel.org>",
        "Subject": "[PATCH net-next v2 1/7] net: korina: don't use overflow and\n\tunderflow interrupts",
        "Date": "Sun, 17 Sep 2017 20:24:15 +0300",
        "Message-Id": "<20170917172415.32291-1-roman@advem.lv>",
        "X-Mailer": "git-send-email 2.11.0",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "When such interrupts occur there is not much we can do.\nDropping the whole ring doesn't help and only produces high packet loss.\nIf we just ignore the interrupt the mac will drop one or few packets instead of the whole ring.\nAlso this will lower the irq handling load and increase performance.\n\nSigned-off-by: Roman Yeryomin <roman@advem.lv>\n---\n drivers/net/ethernet/korina.c | 83 +------------------------------------------\n 1 file changed, 1 insertion(+), 82 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/korina.c b/drivers/net/ethernet/korina.c\nindex 3c0a6451273d..98d686ed69a9 100644\n--- a/drivers/net/ethernet/korina.c\n+++ b/drivers/net/ethernet/korina.c\n@@ -122,8 +122,6 @@ struct korina_private {\n \n \tint rx_irq;\n \tint tx_irq;\n-\tint ovr_irq;\n-\tint und_irq;\n \n \tspinlock_t lock;        /* NIC xmit lock */\n \n@@ -891,8 +889,6 @@ static void korina_restart_task(struct work_struct *work)\n \t */\n \tdisable_irq(lp->rx_irq);\n \tdisable_irq(lp->tx_irq);\n-\tdisable_irq(lp->ovr_irq);\n-\tdisable_irq(lp->und_irq);\n \n \twritel(readl(&lp->tx_dma_regs->dmasm) |\n \t\t\t\tDMA_STAT_FINI | DMA_STAT_ERR,\n@@ -911,40 +907,10 @@ static void korina_restart_task(struct work_struct *work)\n \t}\n \tkorina_multicast_list(dev);\n \n-\tenable_irq(lp->und_irq);\n-\tenable_irq(lp->ovr_irq);\n \tenable_irq(lp->tx_irq);\n \tenable_irq(lp->rx_irq);\n }\n \n-static void korina_clear_and_restart(struct net_device *dev, u32 value)\n-{\n-\tstruct korina_private *lp = netdev_priv(dev);\n-\n-\tnetif_stop_queue(dev);\n-\twritel(value, &lp->eth_regs->ethintfc);\n-\tschedule_work(&lp->restart_task);\n-}\n-\n-/* Ethernet Tx Underflow interrupt */\n-static irqreturn_t korina_und_interrupt(int irq, void *dev_id)\n-{\n-\tstruct net_device *dev = dev_id;\n-\tstruct korina_private *lp = netdev_priv(dev);\n-\tunsigned int und;\n-\n-\tspin_lock(&lp->lock);\n-\n-\tund = readl(&lp->eth_regs->ethintfc);\n-\n-\tif (und & ETH_INT_FC_UND)\n-\t\tkorina_clear_and_restart(dev, und & ~ETH_INT_FC_UND);\n-\n-\tspin_unlock(&lp->lock);\n-\n-\treturn IRQ_HANDLED;\n-}\n-\n static void korina_tx_timeout(struct net_device *dev)\n {\n \tstruct korina_private *lp = netdev_priv(dev);\n@@ -952,25 +918,6 @@ static void korina_tx_timeout(struct net_device *dev)\n \tschedule_work(&lp->restart_task);\n }\n \n-/* Ethernet Rx Overflow interrupt */\n-static irqreturn_t\n-korina_ovr_interrupt(int irq, void *dev_id)\n-{\n-\tstruct net_device *dev = dev_id;\n-\tstruct korina_private *lp = netdev_priv(dev);\n-\tunsigned int ovr;\n-\n-\tspin_lock(&lp->lock);\n-\tovr = readl(&lp->eth_regs->ethintfc);\n-\n-\tif (ovr & ETH_INT_FC_OVR)\n-\t\tkorina_clear_and_restart(dev, ovr & ~ETH_INT_FC_OVR);\n-\n-\tspin_unlock(&lp->lock);\n-\n-\treturn IRQ_HANDLED;\n-}\n-\n #ifdef CONFIG_NET_POLL_CONTROLLER\n static void korina_poll_controller(struct net_device *dev)\n {\n@@ -993,8 +940,7 @@ static int korina_open(struct net_device *dev)\n \t}\n \n \t/* Install the interrupt handler\n-\t * that handles the Done Finished\n-\t * Ovr and Und Events */\n+\t * that handles the Done Finished */\n \tret = request_irq(lp->rx_irq, korina_rx_dma_interrupt,\n \t\t\t0, \"Korina ethernet Rx\", dev);\n \tif (ret < 0) {\n@@ -1010,31 +956,10 @@ static int korina_open(struct net_device *dev)\n \t\tgoto err_free_rx_irq;\n \t}\n \n-\t/* Install handler for overrun error. */\n-\tret = request_irq(lp->ovr_irq, korina_ovr_interrupt,\n-\t\t\t0, \"Ethernet Overflow\", dev);\n-\tif (ret < 0) {\n-\t\tprintk(KERN_ERR \"%s: unable to get OVR IRQ %d\\n\",\n-\t\t    dev->name, lp->ovr_irq);\n-\t\tgoto err_free_tx_irq;\n-\t}\n-\n-\t/* Install handler for underflow error. */\n-\tret = request_irq(lp->und_irq, korina_und_interrupt,\n-\t\t\t0, \"Ethernet Underflow\", dev);\n-\tif (ret < 0) {\n-\t\tprintk(KERN_ERR \"%s: unable to get UND IRQ %d\\n\",\n-\t\t    dev->name, lp->und_irq);\n-\t\tgoto err_free_ovr_irq;\n-\t}\n \tmod_timer(&lp->media_check_timer, jiffies + 1);\n out:\n \treturn ret;\n \n-err_free_ovr_irq:\n-\tfree_irq(lp->ovr_irq, dev);\n-err_free_tx_irq:\n-\tfree_irq(lp->tx_irq, dev);\n err_free_rx_irq:\n \tfree_irq(lp->rx_irq, dev);\n err_release:\n@@ -1052,8 +977,6 @@ static int korina_close(struct net_device *dev)\n \t/* Disable interrupts */\n \tdisable_irq(lp->rx_irq);\n \tdisable_irq(lp->tx_irq);\n-\tdisable_irq(lp->ovr_irq);\n-\tdisable_irq(lp->und_irq);\n \n \tkorina_abort_tx(dev);\n \ttmp = readl(&lp->tx_dma_regs->dmasm);\n@@ -1073,8 +996,6 @@ static int korina_close(struct net_device *dev)\n \n \tfree_irq(lp->rx_irq, dev);\n \tfree_irq(lp->tx_irq, dev);\n-\tfree_irq(lp->ovr_irq, dev);\n-\tfree_irq(lp->und_irq, dev);\n \n \treturn 0;\n }\n@@ -1113,8 +1034,6 @@ static int korina_probe(struct platform_device *pdev)\n \n \tlp->rx_irq = platform_get_irq_byname(pdev, \"korina_rx\");\n \tlp->tx_irq = platform_get_irq_byname(pdev, \"korina_tx\");\n-\tlp->ovr_irq = platform_get_irq_byname(pdev, \"korina_ovr\");\n-\tlp->und_irq = platform_get_irq_byname(pdev, \"korina_und\");\n \n \tr = platform_get_resource_byname(pdev, IORESOURCE_MEM, \"korina_regs\");\n \tdev->base_addr = r->start;\n",
    "prefixes": [
        "net-next",
        "v2",
        "1/7"
    ]
}