sfc: move MCDI logging device attribute
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>
This commit is contained in:
parent
b5775b476e
commit
b69f7a3e53
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user