Commit 2ebc440a authored by Philippe Reynes's avatar Philippe Reynes Committed by David S. Miller

net: ethernet: sxgbe: use phydev from struct net_device

The private structure contain a pointer to phydev, but the structure
net_device already contain such pointer. So we can remove the pointer
phydev in the private structure, and update the driver to use the
one contained in struct net_device.
Signed-off-by: default avatarPhilippe Reynes <tremyfr@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cffce361
...@@ -475,7 +475,6 @@ struct sxgbe_priv_data { ...@@ -475,7 +475,6 @@ struct sxgbe_priv_data {
int rxcsum_insertion; int rxcsum_insertion;
spinlock_t stats_lock; /* lock for tx/rx statatics */ spinlock_t stats_lock; /* lock for tx/rx statatics */
struct phy_device *phydev;
int oldlink; int oldlink;
int speed; int speed;
int oldduplex; int oldduplex;
......
...@@ -147,7 +147,7 @@ static int sxgbe_get_eee(struct net_device *dev, ...@@ -147,7 +147,7 @@ static int sxgbe_get_eee(struct net_device *dev,
edata->eee_active = priv->eee_active; edata->eee_active = priv->eee_active;
edata->tx_lpi_timer = priv->tx_lpi_timer; edata->tx_lpi_timer = priv->tx_lpi_timer;
return phy_ethtool_get_eee(priv->phydev, edata); return phy_ethtool_get_eee(dev->phydev, edata);
} }
static int sxgbe_set_eee(struct net_device *dev, static int sxgbe_set_eee(struct net_device *dev,
...@@ -172,7 +172,7 @@ static int sxgbe_set_eee(struct net_device *dev, ...@@ -172,7 +172,7 @@ static int sxgbe_set_eee(struct net_device *dev,
priv->tx_lpi_timer = edata->tx_lpi_timer; priv->tx_lpi_timer = edata->tx_lpi_timer;
} }
return phy_ethtool_set_eee(priv->phydev, edata); return phy_ethtool_set_eee(dev->phydev, edata);
} }
static void sxgbe_getdrvinfo(struct net_device *dev, static void sxgbe_getdrvinfo(struct net_device *dev,
...@@ -185,20 +185,16 @@ static void sxgbe_getdrvinfo(struct net_device *dev, ...@@ -185,20 +185,16 @@ static void sxgbe_getdrvinfo(struct net_device *dev,
static int sxgbe_getsettings(struct net_device *dev, static int sxgbe_getsettings(struct net_device *dev,
struct ethtool_cmd *cmd) struct ethtool_cmd *cmd)
{ {
struct sxgbe_priv_data *priv = netdev_priv(dev); if (dev->phydev)
return phy_ethtool_gset(dev->phydev, cmd);
if (priv->phydev)
return phy_ethtool_gset(priv->phydev, cmd);
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static int sxgbe_setsettings(struct net_device *dev, struct ethtool_cmd *cmd) static int sxgbe_setsettings(struct net_device *dev, struct ethtool_cmd *cmd)
{ {
struct sxgbe_priv_data *priv = netdev_priv(dev); if (dev->phydev)
return phy_ethtool_sset(dev->phydev, cmd);
if (priv->phydev)
return phy_ethtool_sset(priv->phydev, cmd);
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
...@@ -255,7 +251,7 @@ static void sxgbe_get_ethtool_stats(struct net_device *dev, ...@@ -255,7 +251,7 @@ static void sxgbe_get_ethtool_stats(struct net_device *dev,
char *p; char *p;
if (priv->eee_enabled) { if (priv->eee_enabled) {
int val = phy_get_eee_err(priv->phydev); int val = phy_get_eee_err(dev->phydev);
if (val) if (val)
priv->xstats.eee_wakeup_error_n = val; priv->xstats.eee_wakeup_error_n = val;
......
...@@ -124,12 +124,13 @@ static void sxgbe_eee_ctrl_timer(unsigned long arg) ...@@ -124,12 +124,13 @@ static void sxgbe_eee_ctrl_timer(unsigned long arg)
*/ */
bool sxgbe_eee_init(struct sxgbe_priv_data * const priv) bool sxgbe_eee_init(struct sxgbe_priv_data * const priv)
{ {
struct net_device *ndev = priv->dev;
bool ret = false; bool ret = false;
/* MAC core supports the EEE feature. */ /* MAC core supports the EEE feature. */
if (priv->hw_cap.eee) { if (priv->hw_cap.eee) {
/* Check if the PHY supports EEE */ /* Check if the PHY supports EEE */
if (phy_init_eee(priv->phydev, 1)) if (phy_init_eee(ndev->phydev, 1))
return false; return false;
priv->eee_active = 1; priv->eee_active = 1;
...@@ -152,12 +153,14 @@ bool sxgbe_eee_init(struct sxgbe_priv_data * const priv) ...@@ -152,12 +153,14 @@ bool sxgbe_eee_init(struct sxgbe_priv_data * const priv)
static void sxgbe_eee_adjust(const struct sxgbe_priv_data *priv) static void sxgbe_eee_adjust(const struct sxgbe_priv_data *priv)
{ {
struct net_device *ndev = priv->dev;
/* When the EEE has been already initialised we have to /* When the EEE has been already initialised we have to
* modify the PLS bit in the LPI ctrl & status reg according * modify the PLS bit in the LPI ctrl & status reg according
* to the PHY link status. For this reason. * to the PHY link status. For this reason.
*/ */
if (priv->eee_enabled) if (priv->eee_enabled)
priv->hw->mac->set_eee_pls(priv->ioaddr, priv->phydev->link); priv->hw->mac->set_eee_pls(priv->ioaddr, ndev->phydev->link);
} }
/** /**
...@@ -203,7 +206,7 @@ static inline u32 sxgbe_tx_avail(struct sxgbe_tx_queue *queue, int tx_qsize) ...@@ -203,7 +206,7 @@ static inline u32 sxgbe_tx_avail(struct sxgbe_tx_queue *queue, int tx_qsize)
static void sxgbe_adjust_link(struct net_device *dev) static void sxgbe_adjust_link(struct net_device *dev)
{ {
struct sxgbe_priv_data *priv = netdev_priv(dev); struct sxgbe_priv_data *priv = netdev_priv(dev);
struct phy_device *phydev = priv->phydev; struct phy_device *phydev = dev->phydev;
u8 new_state = 0; u8 new_state = 0;
u8 speed = 0xff; u8 speed = 0xff;
...@@ -306,9 +309,6 @@ static int sxgbe_init_phy(struct net_device *ndev) ...@@ -306,9 +309,6 @@ static int sxgbe_init_phy(struct net_device *ndev)
netdev_dbg(ndev, "%s: attached to PHY (UID 0x%x) Link = %d\n", netdev_dbg(ndev, "%s: attached to PHY (UID 0x%x) Link = %d\n",
__func__, phydev->phy_id, phydev->link); __func__, phydev->phy_id, phydev->link);
/* save phy device in private structure */
priv->phydev = phydev;
return 0; return 0;
} }
...@@ -1173,8 +1173,8 @@ static int sxgbe_open(struct net_device *dev) ...@@ -1173,8 +1173,8 @@ static int sxgbe_open(struct net_device *dev)
priv->hw->dma->start_tx(priv->ioaddr, SXGBE_TX_QUEUES); priv->hw->dma->start_tx(priv->ioaddr, SXGBE_TX_QUEUES);
priv->hw->dma->start_rx(priv->ioaddr, SXGBE_RX_QUEUES); priv->hw->dma->start_rx(priv->ioaddr, SXGBE_RX_QUEUES);
if (priv->phydev) if (dev->phydev)
phy_start(priv->phydev); phy_start(dev->phydev);
/* initialise TX coalesce parameters */ /* initialise TX coalesce parameters */
sxgbe_tx_init_coalesce(priv); sxgbe_tx_init_coalesce(priv);
...@@ -1194,8 +1194,8 @@ static int sxgbe_open(struct net_device *dev) ...@@ -1194,8 +1194,8 @@ static int sxgbe_open(struct net_device *dev)
init_error: init_error:
free_dma_desc_resources(priv); free_dma_desc_resources(priv);
if (priv->phydev) if (dev->phydev)
phy_disconnect(priv->phydev); phy_disconnect(dev->phydev);
phy_error: phy_error:
clk_disable_unprepare(priv->sxgbe_clk); clk_disable_unprepare(priv->sxgbe_clk);
...@@ -1216,10 +1216,9 @@ static int sxgbe_release(struct net_device *dev) ...@@ -1216,10 +1216,9 @@ static int sxgbe_release(struct net_device *dev)
del_timer_sync(&priv->eee_ctrl_timer); del_timer_sync(&priv->eee_ctrl_timer);
/* Stop and disconnect the PHY */ /* Stop and disconnect the PHY */
if (priv->phydev) { if (dev->phydev) {
phy_stop(priv->phydev); phy_stop(dev->phydev);
phy_disconnect(priv->phydev); phy_disconnect(dev->phydev);
priv->phydev = NULL;
} }
netif_tx_stop_all_queues(dev); netif_tx_stop_all_queues(dev);
...@@ -1969,7 +1968,6 @@ static void sxgbe_poll_controller(struct net_device *dev) ...@@ -1969,7 +1968,6 @@ static void sxgbe_poll_controller(struct net_device *dev)
*/ */
static int sxgbe_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) static int sxgbe_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
{ {
struct sxgbe_priv_data *priv = netdev_priv(dev);
int ret = -EOPNOTSUPP; int ret = -EOPNOTSUPP;
if (!netif_running(dev)) if (!netif_running(dev))
...@@ -1979,9 +1977,9 @@ static int sxgbe_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) ...@@ -1979,9 +1977,9 @@ static int sxgbe_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
case SIOCGMIIPHY: case SIOCGMIIPHY:
case SIOCGMIIREG: case SIOCGMIIREG:
case SIOCSMIIREG: case SIOCSMIIREG:
if (!priv->phydev) if (!dev->phydev)
return -EINVAL; return -EINVAL;
ret = phy_mii_ioctl(priv->phydev, rq, cmd); ret = phy_mii_ioctl(dev->phydev, rq, cmd);
break; break;
default: default:
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment