91 lines
3.7 KiB
Diff
91 lines
3.7 KiB
Diff
From bf88a40c8d0379e1ce8a6cc0a2bf4f935f90307c Mon Sep 17 00:00:00 2001
|
|
From: Vadim Pasternak <vadimp@nvidia.com>
|
|
Date: Wed, 15 Dec 2021 08:59:14 +0000
|
|
Subject: [PATCH] mlxsw: core: Extend bus init function with event handler
|
|
argument
|
|
|
|
The purpose of new argument - is to introduce system event handler for
|
|
treating line card activation / deactivation signals on modular system.
|
|
|
|
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
|
|
---
|
|
drivers/net/ethernet/mellanox/mlxsw/core.c | 3 ++-
|
|
drivers/net/ethernet/mellanox/mlxsw/core.h | 4 +++-
|
|
drivers/net/ethernet/mellanox/mlxsw/i2c.c | 3 ++-
|
|
drivers/net/ethernet/mellanox/mlxsw/pci.c | 9 ++++++---
|
|
4 files changed, 13 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.c b/drivers/net/ethernet/mellanox/mlxsw/core.c
|
|
index 8c1280781..a9bb43837 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlxsw/core.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.c
|
|
@@ -2005,7 +2005,8 @@ __mlxsw_core_bus_device_register(const struct mlxsw_bus_info *mlxsw_bus_info,
|
|
}
|
|
|
|
res = mlxsw_driver->res_query_enabled ? &mlxsw_core->res : NULL;
|
|
- err = mlxsw_bus->init(bus_priv, mlxsw_core, mlxsw_driver->profile, res);
|
|
+ err = mlxsw_bus->init(bus_priv, mlxsw_core, mlxsw_driver->profile, res,
|
|
+ mlxsw_driver->sys_event_handler);
|
|
if (err)
|
|
goto err_bus_init;
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core.h b/drivers/net/ethernet/mellanox/mlxsw/core.h
|
|
index 10ea541bb..b09f9013d 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlxsw/core.h
|
|
+++ b/drivers/net/ethernet/mellanox/mlxsw/core.h
|
|
@@ -390,6 +390,7 @@ struct mlxsw_driver {
|
|
*/
|
|
void (*ptp_transmitted)(struct mlxsw_core *mlxsw_core,
|
|
struct sk_buff *skb, u8 local_port);
|
|
+ void (*sys_event_handler)(struct mlxsw_core *mlxsw_core);
|
|
|
|
u8 txhdr_len;
|
|
const struct mlxsw_config_profile *profile;
|
|
@@ -432,7 +433,8 @@ struct mlxsw_bus {
|
|
const char *kind;
|
|
int (*init)(void *bus_priv, struct mlxsw_core *mlxsw_core,
|
|
const struct mlxsw_config_profile *profile,
|
|
- struct mlxsw_res *res);
|
|
+ struct mlxsw_res *res,
|
|
+ void (*sys_event_handler)(struct mlxsw_core *mlxsw_core));
|
|
void (*fini)(void *bus_priv);
|
|
bool (*skb_transmit_busy)(void *bus_priv,
|
|
const struct mlxsw_tx_info *tx_info);
|
|
diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
|
|
index b8a5c0cbb..b75416561 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
|
|
@@ -530,7 +530,8 @@ static int mlxsw_i2c_skb_transmit(void *bus_priv, struct sk_buff *skb,
|
|
static int
|
|
mlxsw_i2c_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
|
|
const struct mlxsw_config_profile *profile,
|
|
- struct mlxsw_res *res)
|
|
+ struct mlxsw_res *res,
|
|
+ void (*sys_event_handler)(struct mlxsw_core *mlxsw_core))
|
|
{
|
|
struct mlxsw_i2c *mlxsw_i2c = bus_priv;
|
|
char *mbox;
|
|
diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c
|
|
index dbb16ce25..e8e91130c 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlxsw/pci.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c
|
|
@@ -1411,9 +1411,12 @@ static void mlxsw_pci_free_irq_vectors(struct mlxsw_pci *mlxsw_pci)
|
|
pci_free_irq_vectors(mlxsw_pci->pdev);
|
|
}
|
|
|
|
-static int mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
|
|
- const struct mlxsw_config_profile *profile,
|
|
- struct mlxsw_res *res)
|
|
+static int
|
|
+mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
|
|
+ const struct mlxsw_config_profile *profile,
|
|
+ struct mlxsw_res *res,
|
|
+ void (*sys_event_handler)(struct mlxsw_core *mlxsw_core))
|
|
+
|
|
{
|
|
struct mlxsw_pci *mlxsw_pci = bus_priv;
|
|
struct pci_dev *pdev = mlxsw_pci->pdev;
|
|
--
|
|
2.30.2
|
|
|