get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 834173,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/834173/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/netdev/patch/20171104085030.25430-3-saeedm@mellanox.com/",
    "project": {
        "id": 7,
        "url": "http://patchwork.ozlabs.org/api/1.2/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": "<20171104085030.25430-3-saeedm@mellanox.com>",
    "list_archive_url": null,
    "date": "2017-11-04T08:50:20",
    "name": "[net-next,02/12] net/mlx5: QCAM register firmware command support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "08a8d5ef46a939f47df4ac30f479acf4c925859a",
    "submitter": {
        "id": 65299,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/65299/?format=api",
        "name": "Saeed Mahameed",
        "email": "saeedm@mellanox.com"
    },
    "delegate": {
        "id": 34,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/34/?format=api",
        "username": "davem",
        "first_name": "David",
        "last_name": "Miller",
        "email": "davem@davemloft.net"
    },
    "mbox": "http://patchwork.ozlabs.org/project/netdev/patch/20171104085030.25430-3-saeedm@mellanox.com/mbox/",
    "series": [
        {
            "id": 11869,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/11869/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/netdev/list/?series=11869",
            "date": "2017-11-04T08:50:18",
            "name": "[net-next,01/12] net/dcb: Add dscp to priority selector type",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/11869/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/834173/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/834173/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>)",
        "Received": [
            "from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3yTXd86WTqz9sBW\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  4 Nov 2017 19:52:12 +1100 (AEDT)",
            "(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1756247AbdKDIwD (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tSat, 4 Nov 2017 04:52:03 -0400",
            "from mail-il-dmz.mellanox.com ([193.47.165.129]:54454 \"EHLO\n\tmellanox.co.il\" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org\n\twith ESMTP id S1751838AbdKDIwA (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Sat, 4 Nov 2017 04:52:00 -0400",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n\tsaeedm@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 4 Nov 2017 10:51:51 +0200",
            "from mti-swat15.mti.labs.mlnx. (mti-swat15.mti.labs.mlnx\n\t[10.20.1.123])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id vA48pkiQ022678;\n\tSat, 4 Nov 2017 10:51:50 +0200"
        ],
        "From": "Saeed Mahameed <saeedm@mellanox.com>",
        "To": "\"David S. Miller\" <davem@davemloft.net>",
        "Cc": "netdev@vger.kernel.org, Huy Nguyen <huyn@mellanox.com>,\n\tSaeed Mahameed <saeedm@mellanox.com>",
        "Subject": "[net-next 02/12] net/mlx5: QCAM register firmware command support",
        "Date": "Sat,  4 Nov 2017 01:50:20 -0700",
        "Message-Id": "<20171104085030.25430-3-saeedm@mellanox.com>",
        "X-Mailer": "git-send-email 2.14.2",
        "In-Reply-To": "<20171104085030.25430-1-saeedm@mellanox.com>",
        "References": "<20171104085030.25430-1-saeedm@mellanox.com>",
        "Sender": "netdev-owner@vger.kernel.org",
        "Precedence": "bulk",
        "List-ID": "<netdev.vger.kernel.org>",
        "X-Mailing-List": "netdev@vger.kernel.org"
    },
    "content": "From: Huy Nguyen <huyn@mellanox.com>\n\nThe QCAM register provides capability bit for all the QoS registers\nusing ACCESS_REG command.\n\nSigned-off-by: Huy Nguyen <huyn@mellanox.com>\nReviewed-by: Parav Pandit <parav@mellanox.com>\nSigned-off-by: Saeed Mahameed <saeedm@mellanox.com>\n---\n drivers/net/ethernet/mellanox/mlx5/core/fw.c       | 10 ++++++\n .../net/ethernet/mellanox/mlx5/core/mlx5_core.h    |  2 ++\n drivers/net/ethernet/mellanox/mlx5/core/port.c     | 12 +++++++\n include/linux/mlx5/device.h                        | 14 ++++++++\n include/linux/mlx5/driver.h                        |  2 ++\n include/linux/mlx5/mlx5_ifc.h                      | 40 +++++++++++++++++++++-\n 6 files changed, 79 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fw.c b/drivers/net/ethernet/mellanox/mlx5/core/fw.c\nindex 2c71557d1cee..5ef1b56b6a96 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/fw.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/fw.c\n@@ -106,6 +106,13 @@ static int mlx5_get_mcam_reg(struct mlx5_core_dev *dev)\n \t\t\t\t   MLX5_MCAM_REGS_FIRST_128);\n }\n \n+static int mlx5_get_qcam_reg(struct mlx5_core_dev *dev)\n+{\n+\treturn mlx5_query_qcam_reg(dev, dev->caps.qcam,\n+\t\t\t\t   MLX5_QCAM_FEATURE_ENHANCED_FEATURES,\n+\t\t\t\t   MLX5_QCAM_REGS_FIRST_128);\n+}\n+\n int mlx5_query_hca_caps(struct mlx5_core_dev *dev)\n {\n \tint err;\n@@ -182,6 +189,9 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)\n \tif (MLX5_CAP_GEN(dev, mcam_reg))\n \t\tmlx5_get_mcam_reg(dev);\n \n+\tif (MLX5_CAP_GEN(dev, qcam_reg))\n+\t\tmlx5_get_qcam_reg(dev);\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h\nindex 8f00de2fe283..ff4a0b889a6f 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h\n@@ -122,6 +122,8 @@ int mlx5_query_pcam_reg(struct mlx5_core_dev *dev, u32 *pcam, u8 feature_group,\n \t\t\tu8 access_reg_group);\n int mlx5_query_mcam_reg(struct mlx5_core_dev *dev, u32 *mcap, u8 feature_group,\n \t\t\tu8 access_reg_group);\n+int mlx5_query_qcam_reg(struct mlx5_core_dev *mdev, u32 *qcam,\n+\t\t\tu8 feature_group, u8 access_reg_group);\n \n void mlx5_lag_add(struct mlx5_core_dev *dev, struct net_device *netdev);\n void mlx5_lag_remove(struct mlx5_core_dev *dev);\ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/port.c b/drivers/net/ethernet/mellanox/mlx5/core/port.c\nindex e07061f565d6..b6553be841f9 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/port.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/port.c\n@@ -98,6 +98,18 @@ int mlx5_query_mcam_reg(struct mlx5_core_dev *dev, u32 *mcam, u8 feature_group,\n \treturn mlx5_core_access_reg(dev, in, sz, mcam, sz, MLX5_REG_MCAM, 0, 0);\n }\n \n+int mlx5_query_qcam_reg(struct mlx5_core_dev *mdev, u32 *qcam,\n+\t\t\tu8 feature_group, u8 access_reg_group)\n+{\n+\tu32 in[MLX5_ST_SZ_DW(qcam_reg)] = {};\n+\tint sz = MLX5_ST_SZ_BYTES(qcam_reg);\n+\n+\tMLX5_SET(qcam_reg, in, feature_group, feature_group);\n+\tMLX5_SET(qcam_reg, in, access_reg_group, access_reg_group);\n+\n+\treturn mlx5_core_access_reg(mdev, in, sz, qcam, sz, MLX5_REG_QCAM, 0, 0);\n+}\n+\n struct mlx5_reg_pcap {\n \tu8\t\t\trsvd0;\n \tu8\t\t\tport_num;\ndiff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h\nindex e32dbc4934db..6d79b3f79458 100644\n--- a/include/linux/mlx5/device.h\n+++ b/include/linux/mlx5/device.h\n@@ -1000,6 +1000,14 @@ enum mlx5_mcam_feature_groups {\n \tMLX5_MCAM_FEATURE_ENHANCED_FEATURES         = 0x0,\n };\n \n+enum mlx5_qcam_reg_groups {\n+\tMLX5_QCAM_REGS_FIRST_128                    = 0x0,\n+};\n+\n+enum mlx5_qcam_feature_groups {\n+\tMLX5_QCAM_FEATURE_ENHANCED_FEATURES         = 0x0,\n+};\n+\n /* GET Dev Caps macros */\n #define MLX5_CAP_GEN(mdev, cap) \\\n \tMLX5_GET(cmd_hca_cap, mdev->caps.hca_cur[MLX5_CAP_GENERAL], cap)\n@@ -1108,6 +1116,12 @@ enum mlx5_mcam_feature_groups {\n #define MLX5_CAP_MCAM_FEATURE(mdev, fld) \\\n \tMLX5_GET(mcam_reg, (mdev)->caps.mcam, mng_feature_cap_mask.enhanced_features.fld)\n \n+#define MLX5_CAP_QCAM_REG(mdev, fld) \\\n+\tMLX5_GET(qcam_reg, (mdev)->caps.qcam, qos_access_reg_cap_mask.reg_cap.fld)\n+\n+#define MLX5_CAP_QCAM_FEATURE(mdev, fld) \\\n+\tMLX5_GET(qcam_reg, (mdev)->caps.qcam, qos_feature_cap_mask.feature_cap.fld)\n+\n #define MLX5_CAP_FPGA(mdev, cap) \\\n \tMLX5_GET(fpga_cap, (mdev)->caps.fpga, cap)\n \ndiff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h\nindex 08c77b7e59cb..ed5be52282ea 100644\n--- a/include/linux/mlx5/driver.h\n+++ b/include/linux/mlx5/driver.h\n@@ -109,6 +109,7 @@ enum {\n enum {\n \tMLX5_REG_QETCR\t\t = 0x4005,\n \tMLX5_REG_QTCT\t\t = 0x400a,\n+\tMLX5_REG_QCAM            = 0x4019,\n \tMLX5_REG_DCBX_PARAM      = 0x4020,\n \tMLX5_REG_DCBX_APP        = 0x4021,\n \tMLX5_REG_FPGA_CAP\t = 0x4022,\n@@ -798,6 +799,7 @@ struct mlx5_core_dev {\n \t\tu32 pcam[MLX5_ST_SZ_DW(pcam_reg)];\n \t\tu32 mcam[MLX5_ST_SZ_DW(mcam_reg)];\n \t\tu32 fpga[MLX5_ST_SZ_DW(fpga_cap)];\n+\t\tu32 qcam[MLX5_ST_SZ_DW(qcam_reg)];\n \t} caps;\n \tphys_addr_t\t\tiseg_base;\n \tstruct mlx5_init_seg __iomem *iseg;\ndiff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h\nindex 69772347f866..f127c5b310c5 100644\n--- a/include/linux/mlx5/mlx5_ifc.h\n+++ b/include/linux/mlx5/mlx5_ifc.h\n@@ -838,7 +838,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {\n \tu8         cc_modify_allowed[0x1];\n \tu8         start_pad[0x1];\n \tu8         cache_line_128byte[0x1];\n-\tu8         reserved_at_165[0xb];\n+\tu8         reserved_at_165[0xa];\n+\tu8         qcam_reg[0x1];\n \tu8         gid_table_size[0x10];\n \n \tu8         out_of_seq_cnt[0x1];\n@@ -7890,6 +7891,43 @@ struct mlx5_ifc_mcam_reg_bits {\n \tu8         reserved_at_1c0[0x80];\n };\n \n+struct mlx5_ifc_qcam_access_reg_cap_mask {\n+\tu8         qcam_access_reg_cap_mask_127_to_20[0x6C];\n+\tu8         qpdpm[0x1];\n+\tu8         qcam_access_reg_cap_mask_18_to_4[0x0F];\n+\tu8         qdpm[0x1];\n+\tu8         qpts[0x1];\n+\tu8         qcap[0x1];\n+\tu8         qcam_access_reg_cap_mask_0[0x1];\n+};\n+\n+struct mlx5_ifc_qcam_qos_feature_cap_mask {\n+\tu8         qcam_qos_feature_cap_mask_127_to_1[0x7F];\n+\tu8         qpts_trust_both[0x1];\n+};\n+\n+struct mlx5_ifc_qcam_reg_bits {\n+\tu8         reserved_at_0[0x8];\n+\tu8         feature_group[0x8];\n+\tu8         reserved_at_10[0x8];\n+\tu8         access_reg_group[0x8];\n+\tu8         reserved_at_20[0x20];\n+\n+\tunion {\n+\t\tstruct mlx5_ifc_qcam_access_reg_cap_mask reg_cap;\n+\t\tu8  reserved_at_0[0x80];\n+\t} qos_access_reg_cap_mask;\n+\n+\tu8         reserved_at_c0[0x80];\n+\n+\tunion {\n+\t\tstruct mlx5_ifc_qcam_qos_feature_cap_mask feature_cap;\n+\t\tu8  reserved_at_0[0x80];\n+\t} qos_feature_cap_mask;\n+\n+\tu8         reserved_at_1c0[0x80];\n+};\n+\n struct mlx5_ifc_pcap_reg_bits {\n \tu8         reserved_at_0[0x8];\n \tu8         local_port[0x8];\n",
    "prefixes": [
        "net-next",
        "02/12"
    ]
}