updating with latest patchs from HW mgmt;

renaming two patchs 0016->0017 & 0017->0018
This commit is contained in:
Ohad Oz
2019-01-06 21:41:00 +00:00
parent 73185c6b45
commit bea7de7419
4 changed files with 162 additions and 1 deletions

View File

@@ -0,0 +1,86 @@
From d83d9b8a4813c6a626db151f9b9269d8c69a032a Mon Sep 17 00:00:00 2001
From: Vadim Pasternak <vadimp@mellanox.com>
Date: Sun, 6 Jan 2019 12:25:46 +0000
Subject: [PATCH v1] mlxsw: qsfp_sysfs: Support port numbers initialization
Support port numbers initialization based on system type.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
drivers/net/ethernet/mellanox/mlxsw/core.c | 20 +++++++++++++++++++-
drivers/net/ethernet/mellanox/mlxsw/core.h | 10 +++-------
drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c | 1 +
3 files changed, 23 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
index 10863d6..01987f0 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
@@ -114,12 +114,30 @@ struct mlxsw_core {
struct mlxsw_resources resources;
struct mlxsw_hwmon *hwmon;
struct mlxsw_thermal *thermal;
-struct mlxsw_qsfp *qsfp;
+ struct mlxsw_qsfp *qsfp;
struct mlxsw_core_port ports[MLXSW_PORT_MAX_PORTS];
+ unsigned int max_ports;
unsigned long driver_priv[0];
/* driver_priv has to be always the last item */
};
+#define MLXSW_PORT_MAX_PORTS_DEFAULT 0x40
+unsigned int mlxsw_core_max_ports(const struct mlxsw_core *mlxsw_core)
+{
+ if (mlxsw_core->max_ports)
+ return mlxsw_core->max_ports;
+ else
+ return MLXSW_PORT_MAX_PORTS_DEFAULT;
+}
+EXPORT_SYMBOL(mlxsw_core_max_ports);
+
+void mlxsw_core_max_ports_set(struct mlxsw_core *mlxsw_core,
+ unsigned int max_ports)
+{
+ mlxsw_core->max_ports = max_ports;
+}
+EXPORT_SYMBOL(mlxsw_core_max_ports_set);
+
void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core)
{
return mlxsw_core->driver_priv;
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ethernet/mellanox/mlxsw/core.h
index 4fb104e..db27dd0 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.h
@@ -63,13 +63,9 @@ struct mlxsw_driver;
struct mlxsw_bus;
struct mlxsw_bus_info;
-#define MLXSW_PORT_MAX_PORTS_DEFAULT 0x40
-static inline unsigned int
-mlxsw_core_max_ports(const struct mlxsw_core *mlxsw_core)
-{
- return MLXSW_PORT_MAX_PORTS_DEFAULT;
-}
-
+unsigned int mlxsw_core_max_ports(const struct mlxsw_core *mlxsw_core);
+void mlxsw_core_max_ports_set(struct mlxsw_core *mlxsw_core,
+ unsigned int max_ports);
void *mlxsw_core_driver_priv(struct mlxsw_core *mlxsw_core);
int mlxsw_core_driver_register(struct mlxsw_driver *mlxsw_driver);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c b/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c
index bee2a08..0781f16 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c
@@ -298,6 +298,7 @@ int mlxsw_qsfp_init(struct mlxsw_core *mlxsw_core,
mlxsw_qsfp->bus_info = mlxsw_bus_info;
mlxsw_bus_info->dev->platform_data = mlxsw_qsfp;
+ mlxsw_core_max_ports_set(mlxsw_core, mlxsw_qsfp_num);
for (i = 1; i <= mlxsw_qsfp_num; i++) {
mlxsw_reg_pmlp_pack(pmlp_pl, i);
err = mlxsw_reg_query(mlxsw_qsfp->core, MLXSW_REG(pmlp),
--
2.1.4

View File

@@ -484,7 +484,7 @@ index d8fa4be..11388c5 100644
}
/* Validate that conf parameters are not zeros. */
- if (!data->mask || !data->bit) {
+ if (!data->mask || !data->bit || !data->capability) {
+ if (!data->mask && !data->bit && !data->capability) {
dev_err(fan->dev, "invalid conf entry params: %s\n",
data->label);
return -EINVAL;

View File

@@ -0,0 +1,75 @@
From c6a95c1ea4518a19cf46e8d0c844ae980df4c5da Mon Sep 17 00:00:00 2001
From: Vadim Pasternak <vadimp@mellanox.com>
Date: Thu, 3 Jan 2019 18:05:01 +0000
Subject: [PATCH v1] mlxsw: qsfp_sysfs: Support extended port numbers for
Spectrume2 chip
Add system type detection through DMI table in order to distinct between
the systems supporting up to 64 and up to 128 ports.
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
---
drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c b/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c
index c072b91..bee2a08 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/qsfp_sysfs.c
@@ -47,7 +47,7 @@
#define MLXSW_QSFP_SUB_PAGE_NUM 3
#define MLXSW_QSFP_SUB_PAGE_SIZE 48
#define MLXSW_QSFP_LAST_SUB_PAGE_SIZE 32
-#define MLXSW_QSFP_MAX_NUM 64
+#define MLXSW_QSFP_MAX_NUM 128
#define MLXSW_QSFP_MIN_REQ_LEN 4
#define MLXSW_QSFP_STATUS_VALID_TIME (120 * HZ)
#define MLXSW_QSFP_MAX_CPLD_NUM 3
@@ -88,6 +88,7 @@ struct mlxsw_qsfp {
};
static int mlxsw_qsfp_cpld_num = MLXSW_QSFP_MIN_CPLD_NUM;
+static int mlxsw_qsfp_num = MLXSW_QSFP_MAX_NUM / 2;
static int
mlxsw_qsfp_query_module_eeprom(struct mlxsw_qsfp *mlxsw_qsfp, u8 index,
@@ -238,6 +239,13 @@ static int mlxsw_qsfp_dmi_set_cpld_num(const struct dmi_system_id *dmi)
return 1;
};
+static int mlxsw_qsfp_dmi_set_qsfp_num(const struct dmi_system_id *dmi)
+{
+ mlxsw_qsfp_num = MLXSW_QSFP_MAX_NUM;
+
+ return 1;
+};
+
static const struct dmi_system_id mlxsw_qsfp_dmi_table[] = {
{
.callback = mlxsw_qsfp_dmi_set_cpld_num,
@@ -253,6 +261,13 @@ static const struct dmi_system_id mlxsw_qsfp_dmi_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "MSN27"),
},
},
+ {
+ .callback = mlxsw_qsfp_dmi_set_qsfp_num,
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "MSN37"),
+ },
+ },
{ }
};
MODULE_DEVICE_TABLE(dmi, mlxsw_qsfp_dmi_table);
@@ -283,7 +298,7 @@ int mlxsw_qsfp_init(struct mlxsw_core *mlxsw_core,
mlxsw_qsfp->bus_info = mlxsw_bus_info;
mlxsw_bus_info->dev->platform_data = mlxsw_qsfp;
- for (i = 1; i <= MLXSW_QSFP_MAX_NUM; i++) {
+ for (i = 1; i <= mlxsw_qsfp_num; i++) {
mlxsw_reg_pmlp_pack(pmlp_pl, i);
err = mlxsw_reg_query(mlxsw_qsfp->core, MLXSW_REG(pmlp),
pmlp_pl);
--
2.1.4