Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/834173/?format=api
{ "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" ] }