aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/marvell/mvpp2.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
index 868a957f24bb..18477fe29394 100644
--- a/drivers/net/ethernet/marvell/mvpp2.c
+++ b/drivers/net/ethernet/marvell/mvpp2.c
@@ -699,7 +699,6 @@ struct mvpp2_port {
699 u16 rx_ring_size; 699 u16 rx_ring_size;
700 struct mvpp2_pcpu_stats __percpu *stats; 700 struct mvpp2_pcpu_stats __percpu *stats;
701 701
702 struct phy_device *phy_dev;
703 phy_interface_t phy_interface; 702 phy_interface_t phy_interface;
704 struct device_node *phy_node; 703 struct device_node *phy_node;
705 unsigned int link; 704 unsigned int link;
@@ -4850,7 +4849,7 @@ static irqreturn_t mvpp2_isr(int irq, void *dev_id)
4850static void mvpp2_link_event(struct net_device *dev) 4849static void mvpp2_link_event(struct net_device *dev)
4851{ 4850{
4852 struct mvpp2_port *port = netdev_priv(dev); 4851 struct mvpp2_port *port = netdev_priv(dev);
4853 struct phy_device *phydev = port->phy_dev; 4852 struct phy_device *phydev = dev->phydev;
4854 int status_change = 0; 4853 int status_change = 0;
4855 u32 val; 4854 u32 val;
4856 4855
@@ -5416,6 +5415,8 @@ static int mvpp2_poll(struct napi_struct *napi, int budget)
5416/* Set hw internals when starting port */ 5415/* Set hw internals when starting port */
5417static void mvpp2_start_dev(struct mvpp2_port *port) 5416static void mvpp2_start_dev(struct mvpp2_port *port)
5418{ 5417{
5418 struct net_device *ndev = port->dev;
5419
5419 mvpp2_gmac_max_rx_size_set(port); 5420 mvpp2_gmac_max_rx_size_set(port);
5420 mvpp2_txp_max_tx_size_set(port); 5421 mvpp2_txp_max_tx_size_set(port);
5421 5422
@@ -5425,13 +5426,15 @@ static void mvpp2_start_dev(struct mvpp2_port *port)
5425 mvpp2_interrupts_enable(port); 5426 mvpp2_interrupts_enable(port);
5426 5427
5427 mvpp2_port_enable(port); 5428 mvpp2_port_enable(port);
5428 phy_start(port->phy_dev); 5429 phy_start(ndev->phydev);
5429 netif_tx_start_all_queues(port->dev); 5430 netif_tx_start_all_queues(port->dev);
5430} 5431}
5431 5432
5432/* Set hw internals when stopping port */ 5433/* Set hw internals when stopping port */
5433static void mvpp2_stop_dev(struct mvpp2_port *port) 5434static void mvpp2_stop_dev(struct mvpp2_port *port)
5434{ 5435{
5436 struct net_device *ndev = port->dev;
5437
5435 /* Stop new packets from arriving to RXQs */ 5438 /* Stop new packets from arriving to RXQs */
5436 mvpp2_ingress_disable(port); 5439 mvpp2_ingress_disable(port);
5437 5440
@@ -5447,7 +5450,7 @@ static void mvpp2_stop_dev(struct mvpp2_port *port)
5447 5450
5448 mvpp2_egress_disable(port); 5451 mvpp2_egress_disable(port);
5449 mvpp2_port_disable(port); 5452 mvpp2_port_disable(port);
5450 phy_stop(port->phy_dev); 5453 phy_stop(ndev->phydev);
5451} 5454}
5452 5455
5453/* Return positive if MTU is valid */ 5456/* Return positive if MTU is valid */
@@ -5535,7 +5538,6 @@ static int mvpp2_phy_connect(struct mvpp2_port *port)
5535 phy_dev->supported &= PHY_GBIT_FEATURES; 5538 phy_dev->supported &= PHY_GBIT_FEATURES;
5536 phy_dev->advertising = phy_dev->supported; 5539 phy_dev->advertising = phy_dev->supported;
5537 5540
5538 port->phy_dev = phy_dev;
5539 port->link = 0; 5541 port->link = 0;
5540 port->duplex = 0; 5542 port->duplex = 0;
5541 port->speed = 0; 5543 port->speed = 0;
@@ -5545,8 +5547,9 @@ static int mvpp2_phy_connect(struct mvpp2_port *port)
5545 5547
5546static void mvpp2_phy_disconnect(struct mvpp2_port *port) 5548static void mvpp2_phy_disconnect(struct mvpp2_port *port)
5547{ 5549{
5548 phy_disconnect(port->phy_dev); 5550 struct net_device *ndev = port->dev;
5549 port->phy_dev = NULL; 5551
5552 phy_disconnect(ndev->phydev);
5550} 5553}
5551 5554
5552static int mvpp2_open(struct net_device *dev) 5555static int mvpp2_open(struct net_device *dev)
@@ -5796,13 +5799,12 @@ mvpp2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
5796 5799
5797static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 5800static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
5798{ 5801{
5799 struct mvpp2_port *port = netdev_priv(dev);
5800 int ret; 5802 int ret;
5801 5803
5802 if (!port->phy_dev) 5804 if (!dev->phydev)
5803 return -ENOTSUPP; 5805 return -ENOTSUPP;
5804 5806
5805 ret = phy_mii_ioctl(port->phy_dev, ifr, cmd); 5807 ret = phy_mii_ioctl(dev->phydev, ifr, cmd);
5806 if (!ret) 5808 if (!ret)
5807 mvpp2_link_event(dev); 5809 mvpp2_link_event(dev);
5808 5810
@@ -5815,22 +5817,18 @@ static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
5815static int mvpp2_ethtool_get_settings(struct net_device *dev, 5817static int mvpp2_ethtool_get_settings(struct net_device *dev,
5816 struct ethtool_cmd *cmd) 5818 struct ethtool_cmd *cmd)
5817{ 5819{
5818 struct mvpp2_port *port = netdev_priv(dev); 5820 if (!dev->phydev)
5819
5820 if (!port->phy_dev)
5821 return -ENODEV; 5821 return -ENODEV;
5822 return phy_ethtool_gset(port->phy_dev, cmd); 5822 return phy_ethtool_gset(dev->phydev, cmd);
5823} 5823}
5824 5824
5825/* Set settings (phy address, speed) for ethtools */ 5825/* Set settings (phy address, speed) for ethtools */
5826static int mvpp2_ethtool_set_settings(struct net_device *dev, 5826static int mvpp2_ethtool_set_settings(struct net_device *dev,
5827 struct ethtool_cmd *cmd) 5827 struct ethtool_cmd *cmd)
5828{ 5828{
5829 struct mvpp2_port *port = netdev_priv(dev); 5829 if (!dev->phydev)
5830
5831 if (!port->phy_dev)
5832 return -ENODEV; 5830 return -ENODEV;
5833 return phy_ethtool_sset(port->phy_dev, cmd); 5831 return phy_ethtool_sset(dev->phydev, cmd);
5834} 5832}
5835 5833
5836/* Set interrupt coalescing for ethtools */ 5834/* Set interrupt coalescing for ethtools */