get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 854002,
    "url": "http://patchwork.ozlabs.org/api/patches/854002/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20171229134853.14186-1-alice.michael@intel.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": "<20171229134853.14186-1-alice.michael@intel.com>",
    "list_archive_url": null,
    "date": "2017-12-29T13:48:53",
    "name": "[next,S85-V1,02/14] i40e/i40evf: Record ITR register location in the q_vector",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "908968ac632b39ec60843db815034fa4134873b8",
    "submitter": {
        "id": 71123,
        "url": "http://patchwork.ozlabs.org/api/people/71123/?format=api",
        "name": "Michael, Alice",
        "email": "alice.michael@intel.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/20171229134853.14186-1-alice.michael@intel.com/mbox/",
    "series": [
        {
            "id": 20665,
            "url": "http://patchwork.ozlabs.org/api/series/20665/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=20665",
            "date": "2017-12-29T13:48:33",
            "name": "[next,S85-V1,01/14] i40e: fix typo in function description",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/20665/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/854002/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/854002/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;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.136; helo=silver.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
        "Received": [
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3z7gQ40XKyz9s7G\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 30 Dec 2017 08:55:55 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 8C377292AC;\n\tFri, 29 Dec 2017 21:55:54 +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 4or3wtsyx-aS; Fri, 29 Dec 2017 21:55:52 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby silver.osuosl.org (Postfix) with ESMTP id 220FF292AA;\n\tFri, 29 Dec 2017 21:55:52 +0000 (UTC)",
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id A68971C0180\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:55:50 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id A2DC7876B5\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:55:50 +0000 (UTC)",
            "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id qrYfHXm3Izm2 for <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:55:49 +0000 (UTC)",
            "from mga06.intel.com (mga06.intel.com [134.134.136.31])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id D0C3A8769D\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:55:49 +0000 (UTC)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n\tby orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t29 Dec 2017 13:55:49 -0800",
            "from alicemic-2.jf.intel.com ([10.166.16.121])\n\tby orsmga005.jf.intel.com with ESMTP; 29 Dec 2017 13:55:48 -0800"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.45,478,1508828400\"; d=\"scan'208\";a=\"188000918\"",
        "From": "Alice Michael <alice.michael@intel.com>",
        "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org",
        "Date": "Fri, 29 Dec 2017 08:48:53 -0500",
        "Message-Id": "<20171229134853.14186-1-alice.michael@intel.com>",
        "X-Mailer": "git-send-email 2.9.5",
        "Subject": "[Intel-wired-lan] [next PATCH S85-V1 02/14] i40e/i40evf: Record ITR\n\tregister location in the q_vector",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.24",
        "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>",
        "MIME-Version": "1.0",
        "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": "From: Alexander Duyck <alexander.h.duyck@intel.com>\n\nThe drivers for i40e and i40evf had a reg_idx value stored in the q_vector\nthat was going completely unused. I can only assume this was copied over\nfrom ixgbe and nobody knew how to use it.\n\nI'm going to make use of the value to avoid having to compute the vector\nand thus the register index for multiple paths throughout the drivers.\n\nSigned-off-by: Alexander Duyck <alexander.h.duyck@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_main.c     |  1 +\n drivers/net/ethernet/intel/i40e/i40e_txrx.c     | 12 ++++--------\n drivers/net/ethernet/intel/i40evf/i40e_txrx.c   | 12 ++++--------\n drivers/net/ethernet/intel/i40evf/i40evf.h      |  4 ++--\n drivers/net/ethernet/intel/i40evf/i40evf_main.c |  1 +\n 5 files changed, 12 insertions(+), 18 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c\nindex 4a3b13d..14e4a2b 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_main.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c\n@@ -4107,6 +4107,7 @@ static void i40e_vsi_map_rings_to_vectors(struct i40e_vsi *vsi)\n \t\tnum_ringpairs = DIV_ROUND_UP(qp_remaining, q_vectors - v_start);\n \n \t\tq_vector->num_ringpairs = num_ringpairs;\n+\t\tq_vector->reg_idx = q_vector->v_idx + vsi->base_vector - 1;\n \n \t\tq_vector->rx.count = 0;\n \t\tq_vector->tx.count = 0;\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex 95c2aaf..97c2482 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -955,7 +955,7 @@ static void i40e_enable_wb_on_itr(struct i40e_vsi *vsi,\n \t\t      I40E_PFINT_DYN_CTLN_ITR_INDX_MASK; /* set noitr */\n \n \t\twr32(&vsi->back->hw,\n-\t\t     I40E_PFINT_DYN_CTLN(q_vector->v_idx + vsi->base_vector - 1),\n+\t\t     I40E_PFINT_DYN_CTLN(q_vector->reg_idx),\n \t\t     val);\n \t} else {\n \t\tval = I40E_PFINT_DYN_CTL0_WB_ON_ITR_MASK |\n@@ -982,8 +982,7 @@ void i40e_force_wb(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector)\n \t\t\t  /* allow 00 to be written to the index */\n \n \t\twr32(&vsi->back->hw,\n-\t\t     I40E_PFINT_DYN_CTLN(q_vector->v_idx +\n-\t\t\t\t\t vsi->base_vector - 1), val);\n+\t\t     I40E_PFINT_DYN_CTLN(q_vector->reg_idx), val);\n \t} else {\n \t\tu32 val = I40E_PFINT_DYN_CTL0_INTENA_MASK |\n \t\t\t  I40E_PFINT_DYN_CTL0_ITR_INDX_MASK | /* set noitr */\n@@ -2297,7 +2296,6 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,\n \tstruct i40e_hw *hw = &vsi->back->hw;\n \tbool rx = false, tx = false;\n \tu32 rxval, txval;\n-\tint vector;\n \tint idx = q_vector->v_idx;\n \tint rx_itr_setting, tx_itr_setting;\n \n@@ -2307,8 +2305,6 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,\n \t\treturn;\n \t}\n \n-\tvector = (q_vector->v_idx + vsi->base_vector);\n-\n \t/* avoid dynamic calculation if in countdown mode OR if\n \t * all dynamic is disabled\n \t */\n@@ -2357,12 +2353,12 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,\n \t\t */\n \t\trxval |= BIT(31);\n \t\t/* don't check _DOWN because interrupt isn't being enabled */\n-\t\twr32(hw, INTREG(vector - 1), rxval);\n+\t\twr32(hw, INTREG(q_vector->reg_idx), rxval);\n \t}\n \n enable_int:\n \tif (!test_bit(__I40E_VSI_DOWN, vsi->state))\n-\t\twr32(hw, INTREG(vector - 1), txval);\n+\t\twr32(hw, INTREG(q_vector->reg_idx), txval);\n \n \tif (q_vector->itr_countdown)\n \t\tq_vector->itr_countdown--;\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\nindex ae6dd90..464200f 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c\n@@ -369,8 +369,7 @@ static void i40e_enable_wb_on_itr(struct i40e_vsi *vsi,\n \t      I40E_VFINT_DYN_CTLN1_ITR_INDX_MASK; /* set noitr */\n \n \twr32(&vsi->back->hw,\n-\t     I40E_VFINT_DYN_CTLN1(q_vector->v_idx +\n-\t\t\t\t  vsi->base_vector - 1), val);\n+\t     I40E_VFINT_DYN_CTLN1(q_vector->reg_idx), val);\n \tq_vector->arm_wb_state = true;\n }\n \n@@ -389,7 +388,7 @@ void i40evf_force_wb(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector)\n \t\t  /* allow 00 to be written to the index */;\n \n \twr32(&vsi->back->hw,\n-\t     I40E_VFINT_DYN_CTLN1(q_vector->v_idx + vsi->base_vector - 1),\n+\t     I40E_VFINT_DYN_CTLN1(q_vector->reg_idx),\n \t     val);\n }\n \n@@ -1498,12 +1497,9 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,\n \tstruct i40e_hw *hw = &vsi->back->hw;\n \tbool rx = false, tx = false;\n \tu32 rxval, txval;\n-\tint vector;\n \tint idx = q_vector->v_idx;\n \tint rx_itr_setting, tx_itr_setting;\n \n-\tvector = (q_vector->v_idx + vsi->base_vector);\n-\n \t/* avoid dynamic calculation if in countdown mode OR if\n \t * all dynamic is disabled\n \t */\n@@ -1552,12 +1548,12 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,\n \t\t */\n \t\trxval |= BIT(31);\n \t\t/* don't check _DOWN because interrupt isn't being enabled */\n-\t\twr32(hw, INTREG(vector - 1), rxval);\n+\t\twr32(hw, INTREG(q_vector->reg_idx), rxval);\n \t}\n \n enable_int:\n \tif (!test_bit(__I40E_VSI_DOWN, vsi->state))\n-\t\twr32(hw, INTREG(vector - 1), txval);\n+\t\twr32(hw, INTREG(q_vector->reg_idx), txval);\n \n \tif (q_vector->itr_countdown)\n \t\tq_vector->itr_countdown--;\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40evf.h b/drivers/net/ethernet/intel/i40evf/i40evf.h\nindex 33c0ffc..9690c1e 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40evf.h\n+++ b/drivers/net/ethernet/intel/i40evf/i40evf.h\n@@ -114,14 +114,14 @@ struct i40e_q_vector {\n \tstruct i40evf_adapter *adapter;\n \tstruct i40e_vsi *vsi;\n \tstruct napi_struct napi;\n-\tunsigned long reg_idx;\n \tstruct i40e_ring_container rx;\n \tstruct i40e_ring_container tx;\n \tu32 ring_mask;\n \tu8 num_ringpairs;\t/* total number of ring pairs in vector */\n #define ITR_COUNTDOWN_START 100\n \tu8 itr_countdown;\t/* when 0 or 1 update ITR */\n-\tint v_idx;\t/* vector index in list */\n+\tu16 v_idx;\t\t/* index in the vsi->q_vector array. */\n+\tu16 reg_idx;\t\t/* register index of the interrupt */\n \tchar name[IFNAMSIZ + 15];\n \tbool arm_wb_state;\n \tcpumask_t affinity_mask;\ndiff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c\nindex d59bf06..16989ad 100644\n--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c\n+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c\n@@ -1387,6 +1387,7 @@ static int i40evf_alloc_q_vectors(struct i40evf_adapter *adapter)\n \t\tq_vector->adapter = adapter;\n \t\tq_vector->vsi = &adapter->vsi;\n \t\tq_vector->v_idx = q_idx;\n+\t\tq_vector->reg_idx = q_idx;\n \t\tcpumask_copy(&q_vector->affinity_mask, cpu_possible_mask);\n \t\tnetif_napi_add(adapter->netdev, &q_vector->napi,\n \t\t\t       i40evf_napi_poll, NAPI_POLL_WEIGHT);\n",
    "prefixes": [
        "next",
        "S85-V1",
        "02/14"
    ]
}