]> git.karo-electronics.de Git - linux-beck.git/commitdiff
net: ethernet: octeon: use phydev from struct net_device
authorPhilippe Reynes <tremyfr@gmail.com>
Sat, 30 Jul 2016 14:14:43 +0000 (16:14 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 8 Aug 2016 22:42:20 +0000 (15:42 -0700)
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: Philippe Reynes <tremyfr@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/staging/octeon/ethernet-mdio.c
drivers/staging/octeon/ethernet-rgmii.c
drivers/staging/octeon/ethernet.c
drivers/staging/octeon/octeon-ethernet.h

index e13a4ab46977cba259a8faaad0a2f22e82ceb365..661b97b9f6d259a0c946d6811d63281618e6d62d 100644 (file)
@@ -36,36 +36,30 @@ static void cvm_oct_get_drvinfo(struct net_device *dev,
 
 static int cvm_oct_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
 {
-       struct octeon_ethernet *priv = netdev_priv(dev);
-
-       if (priv->phydev)
-               return phy_ethtool_gset(priv->phydev, cmd);
+       if (dev->phydev)
+               return phy_ethtool_gset(dev->phydev, cmd);
 
        return -EINVAL;
 }
 
 static int cvm_oct_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
 {
-       struct octeon_ethernet *priv = netdev_priv(dev);
-
        if (!capable(CAP_NET_ADMIN))
                return -EPERM;
 
-       if (priv->phydev)
-               return phy_ethtool_sset(priv->phydev, cmd);
+       if (dev->phydev)
+               return phy_ethtool_sset(dev->phydev, cmd);
 
        return -EINVAL;
 }
 
 static int cvm_oct_nway_reset(struct net_device *dev)
 {
-       struct octeon_ethernet *priv = netdev_priv(dev);
-
        if (!capable(CAP_NET_ADMIN))
                return -EPERM;
 
-       if (priv->phydev)
-               return phy_start_aneg(priv->phydev);
+       if (dev->phydev)
+               return phy_start_aneg(dev->phydev);
 
        return -EINVAL;
 }
@@ -88,15 +82,13 @@ const struct ethtool_ops cvm_oct_ethtool_ops = {
  */
 int cvm_oct_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 {
-       struct octeon_ethernet *priv = netdev_priv(dev);
-
        if (!netif_running(dev))
                return -EINVAL;
 
-       if (!priv->phydev)
+       if (!dev->phydev)
                return -EINVAL;
 
-       return phy_mii_ioctl(priv->phydev, rq, cmd);
+       return phy_mii_ioctl(dev->phydev, rq, cmd);
 }
 
 void cvm_oct_note_carrier(struct octeon_ethernet *priv,
@@ -119,9 +111,9 @@ void cvm_oct_adjust_link(struct net_device *dev)
        cvmx_helper_link_info_t link_info;
 
        link_info.u64           = 0;
-       link_info.s.link_up     = priv->phydev->link ? 1 : 0;
-       link_info.s.full_duplex = priv->phydev->duplex ? 1 : 0;
-       link_info.s.speed       = priv->phydev->speed;
+       link_info.s.link_up     = dev->phydev->link ? 1 : 0;
+       link_info.s.full_duplex = dev->phydev->duplex ? 1 : 0;
+       link_info.s.speed       = dev->phydev->speed;
        priv->link_info         = link_info.u64;
 
        /*
@@ -130,8 +122,8 @@ void cvm_oct_adjust_link(struct net_device *dev)
        if (priv->poll)
                priv->poll(dev);
 
-       if (priv->last_link != priv->phydev->link) {
-               priv->last_link = priv->phydev->link;
+       if (priv->last_link != dev->phydev->link) {
+               priv->last_link = dev->phydev->link;
                cvmx_helper_link_set(priv->port, link_info);
                cvm_oct_note_carrier(priv, link_info);
        }
@@ -151,9 +143,8 @@ int cvm_oct_common_stop(struct net_device *dev)
 
        priv->poll = NULL;
 
-       if (priv->phydev)
-               phy_disconnect(priv->phydev);
-       priv->phydev = NULL;
+       if (dev->phydev)
+               phy_disconnect(dev->phydev);
 
        if (priv->last_link) {
                link_info.u64 = 0;
@@ -176,6 +167,7 @@ int cvm_oct_phy_setup_device(struct net_device *dev)
 {
        struct octeon_ethernet *priv = netdev_priv(dev);
        struct device_node *phy_node;
+       struct phy_device *phydev = NULL;
 
        if (!priv->of_node)
                goto no_phy;
@@ -193,14 +185,14 @@ int cvm_oct_phy_setup_device(struct net_device *dev)
        if (!phy_node)
                goto no_phy;
 
-       priv->phydev = of_phy_connect(dev, phy_node, cvm_oct_adjust_link, 0,
-                                     PHY_INTERFACE_MODE_GMII);
+       phydev = of_phy_connect(dev, phy_node, cvm_oct_adjust_link, 0,
+                               PHY_INTERFACE_MODE_GMII);
 
-       if (!priv->phydev)
+       if (!phydev)
                return -ENODEV;
 
        priv->last_link = 0;
-       phy_start_aneg(priv->phydev);
+       phy_start_aneg(phydev);
 
        return 0;
 no_phy:
index 91b148cfcbdbb61a2c39e598473bf9fcb69ab840..48846dffc8e1161d2a78f7db3ebb6b5d28237424 100644 (file)
@@ -145,7 +145,7 @@ int cvm_oct_rgmii_open(struct net_device *dev)
        if (ret)
                return ret;
 
-       if (priv->phydev) {
+       if (dev->phydev) {
                /*
                 * In phydev mode, we need still periodic polling for the
                 * preamble error checking, and we also need to call this
index e9cd5f2429210d0459bf13440cc803aebce0ecc5..45d576361319f8aef68744b160557ef8fcea5b1d 100644 (file)
@@ -457,10 +457,8 @@ int cvm_oct_common_init(struct net_device *dev)
 
 void cvm_oct_common_uninit(struct net_device *dev)
 {
-       struct octeon_ethernet *priv = netdev_priv(dev);
-
-       if (priv->phydev)
-               phy_disconnect(priv->phydev);
+       if (dev->phydev)
+               phy_disconnect(dev->phydev);
 }
 
 int cvm_oct_common_open(struct net_device *dev,
@@ -484,10 +482,10 @@ int cvm_oct_common_open(struct net_device *dev,
        if (octeon_is_simulation())
                return 0;
 
-       if (priv->phydev) {
-               int r = phy_read_status(priv->phydev);
+       if (dev->phydev) {
+               int r = phy_read_status(dev->phydev);
 
-               if (r == 0 && priv->phydev->link == 0)
+               if (r == 0 && dev->phydev->link == 0)
                        netif_carrier_off(dev);
                cvm_oct_adjust_link(dev);
        } else {
index 6275c15e0035097fb582c504dc69ca4bb09628a5..d533aefe085aee810541381d098d1813c59a652b 100644 (file)
@@ -40,7 +40,6 @@ struct octeon_ethernet {
        struct sk_buff_head tx_free_list[16];
        /* Device statistics */
        struct net_device_stats stats;
-       struct phy_device *phydev;
        unsigned int last_speed;
        unsigned int last_link;
        /* Last negotiated link state */