net: ravb: Simplify ravb_resume()
authorClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Fri, 2 Feb 2024 08:41:36 +0000 (10:41 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 6 Feb 2024 10:14:57 +0000 (11:14 +0100)
Remove explicit calls to functions that are called by ravb_open(). There is
no need to have them doubled now that the ravb_open() already contains
what is needed for the interface configuration. Along with it,
configurations needed by PTP were moved to ravb_wol_restore(). With this,
code in ravb_resume() becomes simpler.

Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/renesas/ravb_main.c

index 661236affa5b464eafa797c68eded237036a32db..9521cd054274d9279abd17e5a82f0e3b076c04ed 100644 (file)
@@ -2939,6 +2939,20 @@ static int ravb_wol_restore(struct net_device *ndev)
 {
        struct ravb_private *priv = netdev_priv(ndev);
        const struct ravb_hw_info *info = priv->info;
+       int error;
+
+       /* Set reset mode to rearm the WoL logic. */
+       error = ravb_set_opmode(ndev, CCC_OPC_RESET);
+       if (error)
+               return error;
+
+       /* Set AVB config mode. */
+       error = ravb_set_config_mode(ndev);
+       if (error)
+               return error;
+
+       if (priv->info->ccc_gac)
+               ravb_ptp_init(ndev, priv->pdev);
 
        if (info->nc_queues)
                napi_enable(&priv->napi[RAVB_NC]);
@@ -2978,53 +2992,29 @@ static int ravb_resume(struct device *dev)
 {
        struct net_device *ndev = dev_get_drvdata(dev);
        struct ravb_private *priv = netdev_priv(ndev);
-       const struct ravb_hw_info *info = priv->info;
        int ret;
 
        ret = reset_control_deassert(priv->rstc);
        if (ret)
                return ret;
 
-       /* If WoL is enabled set reset mode to rearm the WoL logic */
+       if (!netif_running(ndev))
+               return 0;
+
+       /* If WoL is enabled restore the interface. */
        if (priv->wol_enabled) {
-               ret = ravb_set_opmode(ndev, CCC_OPC_RESET);
+               ret = ravb_wol_restore(ndev);
                if (ret)
                        return ret;
        }
 
-       /* All register have been reset to default values.
-        * Restore all registers which where setup at probe time and
-        * reopen device if it was running before system suspended.
-        */
-
-       /* Set AVB config mode */
-       ret = ravb_set_config_mode(ndev);
-       if (ret)
+       /* Reopening the interface will restore the device to the working state. */
+       ret = ravb_open(ndev);
+       if (ret < 0)
                return ret;
 
-       ravb_set_gti(ndev);
-
-       if (info->internal_delay)
-               ravb_set_delay_mode(ndev);
-
-       /* Restore descriptor base address table */
-       ravb_write(ndev, priv->desc_bat_dma, DBAT);
-
-       if (priv->info->ccc_gac)
-               ravb_ptp_init(ndev, priv->pdev);
-
-       if (netif_running(ndev)) {
-               if (priv->wol_enabled) {
-                       ret = ravb_wol_restore(ndev);
-                       if (ret)
-                               return ret;
-               }
-               ret = ravb_open(ndev);
-               if (ret < 0)
-                       return ret;
-               ravb_set_rx_mode(ndev);
-               netif_device_attach(ndev);
-       }
+       ravb_set_rx_mode(ndev);
+       netif_device_attach(ndev);
 
        return ret;
 }