net: libwx: add phylink to libwx
For the following implementation, add struct phylink and phylink_config to wx structure. Add the helper function for converting phylink to wx, implement ethtool ksetting and nway reset in libwx. Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5403d39b4b
commit
e8e138cf73
@ -185,3 +185,29 @@ void wx_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info)
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(wx_get_drvinfo);
|
||||
|
||||
int wx_nway_reset(struct net_device *netdev)
|
||||
{
|
||||
struct wx *wx = netdev_priv(netdev);
|
||||
|
||||
return phylink_ethtool_nway_reset(wx->phylink);
|
||||
}
|
||||
EXPORT_SYMBOL(wx_nway_reset);
|
||||
|
||||
int wx_get_link_ksettings(struct net_device *netdev,
|
||||
struct ethtool_link_ksettings *cmd)
|
||||
{
|
||||
struct wx *wx = netdev_priv(netdev);
|
||||
|
||||
return phylink_ethtool_ksettings_get(wx->phylink, cmd);
|
||||
}
|
||||
EXPORT_SYMBOL(wx_get_link_ksettings);
|
||||
|
||||
int wx_set_link_ksettings(struct net_device *netdev,
|
||||
const struct ethtool_link_ksettings *cmd)
|
||||
{
|
||||
struct wx *wx = netdev_priv(netdev);
|
||||
|
||||
return phylink_ethtool_ksettings_set(wx->phylink, cmd);
|
||||
}
|
||||
EXPORT_SYMBOL(wx_set_link_ksettings);
|
||||
|
@ -13,4 +13,9 @@ void wx_get_mac_stats(struct net_device *netdev,
|
||||
void wx_get_pause_stats(struct net_device *netdev,
|
||||
struct ethtool_pause_stats *stats);
|
||||
void wx_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info);
|
||||
int wx_nway_reset(struct net_device *netdev);
|
||||
int wx_get_link_ksettings(struct net_device *netdev,
|
||||
struct ethtool_link_ksettings *cmd);
|
||||
int wx_set_link_ksettings(struct net_device *netdev,
|
||||
const struct ethtool_link_ksettings *cmd);
|
||||
#endif /* _WX_ETHTOOL_H_ */
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/if_vlan.h>
|
||||
#include <linux/phylink.h>
|
||||
#include <net/ip.h>
|
||||
|
||||
#define WX_NCSI_SUP 0x8000
|
||||
@ -939,6 +940,8 @@ struct wx {
|
||||
int speed;
|
||||
int duplex;
|
||||
struct phy_device *phydev;
|
||||
struct phylink *phylink;
|
||||
struct phylink_config phylink_config;
|
||||
|
||||
bool wol_hw_supported;
|
||||
bool ncsi_enabled;
|
||||
@ -1044,4 +1047,9 @@ rd64(struct wx *wx, u32 reg)
|
||||
#define wx_dbg(wx, fmt, arg...) \
|
||||
dev_dbg(&(wx)->pdev->dev, fmt, ##arg)
|
||||
|
||||
static inline struct wx *phylink_to_wx(struct phylink_config *config)
|
||||
{
|
||||
return container_of(config, struct wx, phylink_config);
|
||||
}
|
||||
|
||||
#endif /* _WX_TYPE_H_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user