mirror of
https://github.com/Telecominfraproject/OpenNetworkLinux.git
synced 2025-12-25 09:17:08 +00:00
updating with latest patchs from HW mgmt;
renaming two patchs 0016->0017 & 0017->0018
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user