get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1181460,
    "url": "http://patchwork.ozlabs.org/api/patches/1181460/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20191022153155.9008-1-bob.beckett@collabora.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20191022153155.9008-1-bob.beckett@collabora.com>",
    "list_archive_url": null,
    "date": "2019-10-22T15:31:41",
    "name": "[v2] igb: dont drop packets if rx flow control is enabled",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "d7d20427768a72a04eb4e6ea59ac7a7713b4ebaa",
    "submitter": {
        "id": 76934,
        "url": "http://patchwork.ozlabs.org/api/people/76934/?format=api",
        "name": "Robert Beckett",
        "email": "bob.beckett@collabora.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20191022153155.9008-1-bob.beckett@collabora.com/mbox/",
    "series": [
        {
            "id": 137831,
            "url": "http://patchwork.ozlabs.org/api/series/137831/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=137831",
            "date": "2019-10-22T15:31:41",
            "name": "[v2] igb: dont drop packets if rx flow control is enabled",
            "version": 2,
            "mbox": "http://patchwork.ozlabs.org/series/137831/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1181460/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1181460/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org; spf=pass (sender SPF authorized)\n\tsmtp.mailfrom=osuosl.org (client-ip=140.211.166.136;\n\thelo=silver.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org; dmarc=fail (p=none dis=none)\n\theader.from=collabora.com"
        ],
        "Received": [
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 46yHZ936Tqz9sP3\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 23 Oct 2019 02:32:30 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 59EEB227F8;\n\tTue, 22 Oct 2019 15:32:28 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id mvYvSHVJKY+s; Tue, 22 Oct 2019 15:32:25 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 9BA42203EC;\n\tTue, 22 Oct 2019 15:32:25 +0000 (UTC)",
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id 649EB1BF5DB\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 22 Oct 2019 15:32:24 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id 568DE857B0\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 22 Oct 2019 15:32:24 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id Z0KlJs-tZW7h for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 22 Oct 2019 15:32:23 +0000 (UTC)",
            "from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id 2725F84FA4\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 22 Oct 2019 15:32:23 +0000 (UTC)",
            "from [127.0.0.1] (localhost [127.0.0.1])\n\t(Authenticated sender: bbeckett) with ESMTPSA id 8F26A28E66D"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "From": "Robert Beckett <bob.beckett@collabora.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Tue, 22 Oct 2019 16:31:41 +0100",
        "Message-Id": "<20191022153155.9008-1-bob.beckett@collabora.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH v2] igb: dont drop packets if rx flow\n\tcontrol is enabled",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Cc": "Robert Beckett <bob.beckett@collabora.com>, netdev@vger.kernel.org,\n\t\"David S. Miller\" <davem@davemloft.net>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "If rx flow control has been enabled (via autoneg or forced), packets\nshould not be dropped due to rx descriptor ring exhaustion. Instead\npause frames should be used to apply back pressure. This only applies\nif VFs are not in use.\n\nMove SRRCTL setup to its own function for easy reuse and only set drop\nenable bit if rx flow control is not enabled.\n\nSince v1: always enable dropping of packets if VFs in use.\n\nSigned-off-by: Robert Beckett <bob.beckett@collabora.com>\n---\n drivers/net/ethernet/intel/igb/igb.h         |  1 +\n drivers/net/ethernet/intel/igb/igb_ethtool.c |  8 ++++\n drivers/net/ethernet/intel/igb/igb_main.c    | 47 ++++++++++++++------\n 3 files changed, 42 insertions(+), 14 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h\nindex ca54e268d157..49b5fa9d4783 100644\n--- a/drivers/net/ethernet/intel/igb/igb.h\n+++ b/drivers/net/ethernet/intel/igb/igb.h\n@@ -661,6 +661,7 @@ void igb_configure_tx_ring(struct igb_adapter *, struct igb_ring *);\n void igb_configure_rx_ring(struct igb_adapter *, struct igb_ring *);\n void igb_setup_tctl(struct igb_adapter *);\n void igb_setup_rctl(struct igb_adapter *);\n+void igb_setup_srrctl(struct igb_adapter *, struct igb_ring *);\n netdev_tx_t igb_xmit_frame_ring(struct sk_buff *, struct igb_ring *);\n void igb_alloc_rx_buffers(struct igb_ring *, u16);\n void igb_update_stats(struct igb_adapter *);\ndiff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c\nindex 3182b059bf55..1107a1921b43 100644\n--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c\n+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c\n@@ -396,6 +396,7 @@ static int igb_set_pauseparam(struct net_device *netdev,\n \tstruct igb_adapter *adapter = netdev_priv(netdev);\n \tstruct e1000_hw *hw = &adapter->hw;\n \tint retval = 0;\n+\tint i;\n \n \t/* 100basefx does not support setting link flow control */\n \tif (hw->dev_spec._82575.eth_flags.e100_base_fx)\n@@ -428,6 +429,13 @@ static int igb_set_pauseparam(struct net_device *netdev,\n \n \t\tretval = ((hw->phy.media_type == e1000_media_type_copper) ?\n \t\t\t  igb_force_mac_fc(hw) : igb_setup_link(hw));\n+\n+\t\t/* Make sure SRRCTL considers new fc settings for each ring */\n+\t\tfor (i = 0; i < adapter->num_rx_queues; i++) {\n+\t\t\tstruct igb_ring *ring = adapter->rx_ring[i];\n+\n+\t\t\tigb_setup_srrctl(adapter, ring);\n+\t\t}\n \t}\n \n \tclear_bit(__IGB_RESETTING, &adapter->state);\ndiff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c\nindex 105b0624081a..92c30aac0c28 100644\n--- a/drivers/net/ethernet/intel/igb/igb_main.c\n+++ b/drivers/net/ethernet/intel/igb/igb_main.c\n@@ -4463,6 +4463,37 @@ static inline void igb_set_vmolr(struct igb_adapter *adapter,\n \twr32(E1000_VMOLR(vfn), vmolr);\n }\n \n+/**\n+ *  igb_setup_srrctl - configure the split and replication receive control\n+ *  \t\t       registers\n+ *  @adapter: Board private structure\n+ *  @ring: receive ring to be configured\n+ **/\n+void igb_setup_srrctl(struct igb_adapter *adapter, struct igb_ring *ring)\n+{\n+\tstruct e1000_hw *hw = &adapter->hw;\n+\tint reg_idx = ring->reg_idx;\n+\tu32 srrctl = 0;\n+\n+\tsrrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;\n+\tif (ring_uses_large_buffer(ring))\n+\t\tsrrctl |= IGB_RXBUFFER_3072 >> E1000_SRRCTL_BSIZEPKT_SHIFT;\n+\telse\n+\t\tsrrctl |= IGB_RXBUFFER_2048 >> E1000_SRRCTL_BSIZEPKT_SHIFT;\n+\tsrrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF;\n+\tif (hw->mac.type >= e1000_82580)\n+\t\tsrrctl |= E1000_SRRCTL_TIMESTAMP;\n+\t/* Only set Drop Enable if VFs allocated, or we are supporting multiple\n+\t * queues and rx flow control is disabled\n+\t */\n+\tif (adapter->vfs_allocated_count ||\n+\t    (!(hw->fc.current_mode & e1000_fc_rx_pause) &&\n+\t     adapter->num_rx_queues > 1))\n+\t\tsrrctl |= E1000_SRRCTL_DROP_EN;\n+\n+\twr32(E1000_SRRCTL(reg_idx), srrctl);\n+}\n+\n /**\n  *  igb_configure_rx_ring - Configure a receive ring after Reset\n  *  @adapter: board private structure\n@@ -4477,7 +4508,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter,\n \tunion e1000_adv_rx_desc *rx_desc;\n \tu64 rdba = ring->dma;\n \tint reg_idx = ring->reg_idx;\n-\tu32 srrctl = 0, rxdctl = 0;\n+\tu32 rxdctl = 0;\n \n \t/* disable the queue */\n \twr32(E1000_RXDCTL(reg_idx), 0);\n@@ -4495,19 +4526,7 @@ void igb_configure_rx_ring(struct igb_adapter *adapter,\n \twritel(0, ring->tail);\n \n \t/* set descriptor configuration */\n-\tsrrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT;\n-\tif (ring_uses_large_buffer(ring))\n-\t\tsrrctl |= IGB_RXBUFFER_3072 >> E1000_SRRCTL_BSIZEPKT_SHIFT;\n-\telse\n-\t\tsrrctl |= IGB_RXBUFFER_2048 >> E1000_SRRCTL_BSIZEPKT_SHIFT;\n-\tsrrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF;\n-\tif (hw->mac.type >= e1000_82580)\n-\t\tsrrctl |= E1000_SRRCTL_TIMESTAMP;\n-\t/* Only set Drop Enable if we are supporting multiple queues */\n-\tif (adapter->vfs_allocated_count || adapter->num_rx_queues > 1)\n-\t\tsrrctl |= E1000_SRRCTL_DROP_EN;\n-\n-\twr32(E1000_SRRCTL(reg_idx), srrctl);\n+\tigb_setup_srrctl(adapter, ring);\n \n \t/* set filtering for VMDQ pools */\n \tigb_set_vmolr(adapter, reg_idx & 0x7, true);\n",
    "prefixes": [
        "v2"
    ]
}