mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 22:47:56 +00:00
1c16b574c4
Backport the phy/phylink/sfp patches currently queued in netdev or in mainline necessary to support GPON popular modules, specifically to support Huawei and Nokia GPON modules. Signed-off-by: Russell King <linux@armlinux.org.uk> [jonas.gorski: include kernel version in file names, refresh patches] Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
119 lines
3.6 KiB
Diff
119 lines
3.6 KiB
Diff
From 60d756717d772be90d07a07cd2cc140c76da3e4a Mon Sep 17 00:00:00 2001
|
|
From: Russell King <rmk+kernel@armlinux.org.uk>
|
|
Date: Tue, 28 May 2019 10:57:39 +0100
|
|
Subject: [PATCH 610/660] net: sfp: remove sfp-bus use of netdevs
|
|
|
|
The sfp-bus code now no longer has any use for the network device
|
|
structure, so remove its use.
|
|
|
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|
---
|
|
drivers/net/phy/phylink.c | 3 +--
|
|
drivers/net/phy/sfp-bus.c | 10 +++-------
|
|
include/linux/sfp.h | 6 ++----
|
|
3 files changed, 6 insertions(+), 13 deletions(-)
|
|
|
|
--- a/drivers/net/phy/phylink.c
|
|
+++ b/drivers/net/phy/phylink.c
|
|
@@ -555,8 +555,7 @@ static int phylink_register_sfp(struct p
|
|
return ret;
|
|
}
|
|
|
|
- pl->sfp_bus = sfp_register_upstream(ref.fwnode, pl->netdev, pl,
|
|
- &sfp_phylink_ops);
|
|
+ pl->sfp_bus = sfp_register_upstream(ref.fwnode, pl, &sfp_phylink_ops);
|
|
if (!pl->sfp_bus)
|
|
return -ENOMEM;
|
|
|
|
--- a/drivers/net/phy/sfp-bus.c
|
|
+++ b/drivers/net/phy/sfp-bus.c
|
|
@@ -23,7 +23,6 @@ struct sfp_bus {
|
|
|
|
const struct sfp_upstream_ops *upstream_ops;
|
|
void *upstream;
|
|
- struct net_device *netdev;
|
|
struct phy_device *phydev;
|
|
|
|
bool registered;
|
|
@@ -442,13 +441,11 @@ static void sfp_upstream_clear(struct sf
|
|
{
|
|
bus->upstream_ops = NULL;
|
|
bus->upstream = NULL;
|
|
- bus->netdev = NULL;
|
|
}
|
|
|
|
/**
|
|
* sfp_register_upstream() - Register the neighbouring device
|
|
* @fwnode: firmware node for the SFP bus
|
|
- * @ndev: network device associated with the interface
|
|
* @upstream: the upstream private data
|
|
* @ops: the upstream's &struct sfp_upstream_ops
|
|
*
|
|
@@ -459,7 +456,7 @@ static void sfp_upstream_clear(struct sf
|
|
* On error, returns %NULL.
|
|
*/
|
|
struct sfp_bus *sfp_register_upstream(struct fwnode_handle *fwnode,
|
|
- struct net_device *ndev, void *upstream,
|
|
+ void *upstream,
|
|
const struct sfp_upstream_ops *ops)
|
|
{
|
|
struct sfp_bus *bus = sfp_bus_get(fwnode);
|
|
@@ -469,7 +466,6 @@ struct sfp_bus *sfp_register_upstream(st
|
|
rtnl_lock();
|
|
bus->upstream_ops = ops;
|
|
bus->upstream = upstream;
|
|
- bus->netdev = ndev;
|
|
|
|
if (bus->sfp) {
|
|
ret = sfp_register_bus(bus);
|
|
@@ -591,7 +587,7 @@ struct sfp_bus *sfp_register_socket(stru
|
|
bus->sfp = sfp;
|
|
bus->socket_ops = ops;
|
|
|
|
- if (bus->netdev) {
|
|
+ if (bus->upstream_ops) {
|
|
ret = sfp_register_bus(bus);
|
|
if (ret)
|
|
sfp_socket_clear(bus);
|
|
@@ -611,7 +607,7 @@ EXPORT_SYMBOL_GPL(sfp_register_socket);
|
|
void sfp_unregister_socket(struct sfp_bus *bus)
|
|
{
|
|
rtnl_lock();
|
|
- if (bus->netdev)
|
|
+ if (bus->upstream_ops)
|
|
sfp_unregister_bus(bus);
|
|
sfp_socket_clear(bus);
|
|
rtnl_unlock();
|
|
--- a/include/linux/sfp.h
|
|
+++ b/include/linux/sfp.h
|
|
@@ -464,7 +464,6 @@ enum {
|
|
struct fwnode_handle;
|
|
struct ethtool_eeprom;
|
|
struct ethtool_modinfo;
|
|
-struct net_device;
|
|
struct sfp_bus;
|
|
|
|
/**
|
|
@@ -510,7 +509,7 @@ int sfp_get_module_eeprom(struct sfp_bus
|
|
void sfp_upstream_start(struct sfp_bus *bus);
|
|
void sfp_upstream_stop(struct sfp_bus *bus);
|
|
struct sfp_bus *sfp_register_upstream(struct fwnode_handle *fwnode,
|
|
- struct net_device *ndev, void *upstream,
|
|
+ void *upstream,
|
|
const struct sfp_upstream_ops *ops);
|
|
void sfp_unregister_upstream(struct sfp_bus *bus);
|
|
#else
|
|
@@ -555,8 +554,7 @@ static inline void sfp_upstream_stop(str
|
|
}
|
|
|
|
static inline struct sfp_bus *sfp_register_upstream(
|
|
- struct fwnode_handle *fwnode,
|
|
- struct net_device *ndev, void *upstream,
|
|
+ struct fwnode_handle *fwnode, void *upstream,
|
|
const struct sfp_upstream_ops *ops)
|
|
{
|
|
return (struct sfp_bus *)-1;
|