sfc: move MCDI logging device attribute
authorAlex Maftei (amaftei) <amaftei@solarflare.com>
Thu, 9 Jan 2020 15:45:45 +0000 (15:45 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Jan 2020 18:58:35 +0000 (10:58 -0800)
A few bits were extracted from other functions.

Signed-off-by: Alexandru-Mihai Maftei <amaftei@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/sfc/efx_common.c
drivers/net/ethernet/sfc/efx_common.h

index 33b6ed0..4affae7 100644 (file)
@@ -1036,28 +1036,6 @@ show_phy_type(struct device *dev, struct device_attribute *attr, char *buf)
 }
 static DEVICE_ATTR(phy_type, 0444, show_phy_type, NULL);
 
-#ifdef CONFIG_SFC_MCDI_LOGGING
-static ssize_t show_mcdi_log(struct device *dev, struct device_attribute *attr,
-                            char *buf)
-{
-       struct efx_nic *efx = dev_get_drvdata(dev);
-       struct efx_mcdi_iface *mcdi = efx_mcdi(efx);
-
-       return scnprintf(buf, PAGE_SIZE, "%d\n", mcdi->logging_enabled);
-}
-static ssize_t set_mcdi_log(struct device *dev, struct device_attribute *attr,
-                           const char *buf, size_t count)
-{
-       struct efx_nic *efx = dev_get_drvdata(dev);
-       struct efx_mcdi_iface *mcdi = efx_mcdi(efx);
-       bool enable = count > 0 && *buf != '0';
-
-       mcdi->logging_enabled = enable;
-       return count;
-}
-static DEVICE_ATTR(mcdi_logging, 0644, show_mcdi_log, set_mcdi_log);
-#endif
-
 static int efx_register_netdev(struct efx_nic *efx)
 {
        struct net_device *net_dev = efx->net_dev;
@@ -1117,21 +1095,11 @@ static int efx_register_netdev(struct efx_nic *efx)
                          "failed to init net dev attributes\n");
                goto fail_registered;
        }
-#ifdef CONFIG_SFC_MCDI_LOGGING
-       rc = device_create_file(&efx->pci_dev->dev, &dev_attr_mcdi_logging);
-       if (rc) {
-               netif_err(efx, drv, efx->net_dev,
-                         "failed to init net dev attributes\n");
-               goto fail_attr_mcdi_logging;
-       }
-#endif
+
+       efx_init_mcdi_logging(efx);
 
        return 0;
 
-#ifdef CONFIG_SFC_MCDI_LOGGING
-fail_attr_mcdi_logging:
-       device_remove_file(&efx->pci_dev->dev, &dev_attr_phy_type);
-#endif
 fail_registered:
        rtnl_lock();
        efx_dissociate(efx);
@@ -1152,9 +1120,7 @@ static void efx_unregister_netdev(struct efx_nic *efx)
 
        if (efx_dev_registered(efx)) {
                strlcpy(efx->name, pci_name(efx->pci_dev), sizeof(efx->name));
-#ifdef CONFIG_SFC_MCDI_LOGGING
-               device_remove_file(&efx->pci_dev->dev, &dev_attr_mcdi_logging);
-#endif
+               efx_fini_mcdi_logging(efx);
                device_remove_file(&efx->pci_dev->dev, &dev_attr_phy_type);
                unregister_netdev(efx->net_dev);
        }
index 3add2b5..9cd7c15 100644 (file)
@@ -1006,3 +1006,42 @@ void efx_fini_io(struct efx_nic *efx, int bar)
        if (!pci_vfs_assigned(efx->pci_dev))
                pci_disable_device(efx->pci_dev);
 }
+
+#ifdef CONFIG_SFC_MCDI_LOGGING
+static ssize_t show_mcdi_log(struct device *dev, struct device_attribute *attr,
+                            char *buf)
+{
+       struct efx_nic *efx = dev_get_drvdata(dev);
+       struct efx_mcdi_iface *mcdi = efx_mcdi(efx);
+
+       return scnprintf(buf, PAGE_SIZE, "%d\n", mcdi->logging_enabled);
+}
+
+static ssize_t set_mcdi_log(struct device *dev, struct device_attribute *attr,
+                           const char *buf, size_t count)
+{
+       struct efx_nic *efx = dev_get_drvdata(dev);
+       struct efx_mcdi_iface *mcdi = efx_mcdi(efx);
+       bool enable = count > 0 && *buf != '0';
+
+       mcdi->logging_enabled = enable;
+       return count;
+}
+
+static DEVICE_ATTR(mcdi_logging, 0644, show_mcdi_log, set_mcdi_log);
+
+void efx_init_mcdi_logging(struct efx_nic *efx)
+{
+       int rc = device_create_file(&efx->pci_dev->dev, &dev_attr_mcdi_logging);
+
+       if (rc) {
+               netif_warn(efx, drv, efx->net_dev,
+                          "failed to init net dev attributes\n");
+       }
+}
+
+void efx_fini_mcdi_logging(struct efx_nic *efx)
+{
+       device_remove_file(&efx->pci_dev->dev, &dev_attr_mcdi_logging);
+}
+#endif
index c602e52..e03404d 100644 (file)
@@ -55,6 +55,14 @@ static inline int efx_check_disabled(struct efx_nic *efx)
        return 0;
 }
 
+#ifdef CONFIG_SFC_MCDI_LOGGING
+void efx_init_mcdi_logging(struct efx_nic *efx);
+void efx_fini_mcdi_logging(struct efx_nic *efx);
+#else
+static inline void efx_init_mcdi_logging(struct efx_nic *efx) {}
+static inline void efx_fini_mcdi_logging(struct efx_nic *efx) {}
+#endif
+
 void efx_mac_reconfigure(struct efx_nic *efx);
 void efx_link_status_changed(struct efx_nic *efx);