X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fnet%2Fgianfar_sysfs.c;h=5116f68e01b9a4618423f47d555d68771da01d3e;hb=99f5f87eb689c5766fa2c101fe75310a7f9ba3cd;hp=aec9ab17a9a5884df180ac4e26ec59b3ec82185c;hpb=4935361766cc73949fe032cd157d314f288922ba;p=linux-2.6 diff --git a/drivers/net/gianfar_sysfs.c b/drivers/net/gianfar_sysfs.c index aec9ab17a9..5116f68e01 100644 --- a/drivers/net/gianfar_sysfs.c +++ b/drivers/net/gianfar_sysfs.c @@ -37,24 +37,6 @@ #include "gianfar.h" -#define GFAR_ATTR(_name) \ -static ssize_t gfar_show_##_name(struct device *dev, \ - struct device_attribute *attr, char *buf); \ -static ssize_t gfar_set_##_name(struct device *dev, \ - struct device_attribute *attr, \ - const char *buf, size_t count); \ -static DEVICE_ATTR(_name, 0644, gfar_show_##_name, gfar_set_##_name) - -#define GFAR_CREATE_FILE(_dev, _name) \ - device_create_file(&_dev->dev, &dev_attr_##_name) - -GFAR_ATTR(bd_stash); -GFAR_ATTR(rx_stash_size); -GFAR_ATTR(rx_stash_index); -GFAR_ATTR(fifo_threshold); -GFAR_ATTR(fifo_starve); -GFAR_ATTR(fifo_starve_off); - static ssize_t gfar_show_bd_stash(struct device *dev, struct device_attribute *attr, char *buf) { @@ -100,6 +82,8 @@ static ssize_t gfar_set_bd_stash(struct device *dev, return count; } +DEVICE_ATTR(bd_stash, 0644, gfar_show_bd_stash, gfar_set_bd_stash); + static ssize_t gfar_show_rx_stash_size(struct device *dev, struct device_attribute *attr, char *buf) { @@ -119,10 +103,10 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev, spin_lock_irqsave(&priv->rxlock, flags); if (length > priv->rx_buffer_size) - return count; + goto out; if (length == priv->rx_stash_size) - return count; + goto out; priv->rx_stash_size = length; @@ -141,11 +125,15 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev, gfar_write(&priv->regs->attr, temp); +out: spin_unlock_irqrestore(&priv->rxlock, flags); return count; } +DEVICE_ATTR(rx_stash_size, 0644, gfar_show_rx_stash_size, + gfar_set_rx_stash_size); + /* Stashing will only be enabled when rx_stash_size != 0 */ static ssize_t gfar_show_rx_stash_index(struct device *dev, struct device_attribute *attr, @@ -167,10 +155,10 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev, spin_lock_irqsave(&priv->rxlock, flags); if (index > priv->rx_stash_size) - return count; + goto out; if (index == priv->rx_stash_index) - return count; + goto out; priv->rx_stash_index = index; @@ -179,11 +167,15 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev, temp |= ATTRELI_EI(index); gfar_write(&priv->regs->attreli, flags); +out: spin_unlock_irqrestore(&priv->rxlock, flags); return count; } +DEVICE_ATTR(rx_stash_index, 0644, gfar_show_rx_stash_index, + gfar_set_rx_stash_index); + static ssize_t gfar_show_fifo_threshold(struct device *dev, struct device_attribute *attr, char *buf) @@ -219,6 +211,9 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev, return count; } +DEVICE_ATTR(fifo_threshold, 0644, gfar_show_fifo_threshold, + gfar_set_fifo_threshold); + static ssize_t gfar_show_fifo_starve(struct device *dev, struct device_attribute *attr, char *buf) { @@ -253,6 +248,8 @@ static ssize_t gfar_set_fifo_starve(struct device *dev, return count; } +DEVICE_ATTR(fifo_starve, 0644, gfar_show_fifo_starve, gfar_set_fifo_starve); + static ssize_t gfar_show_fifo_starve_off(struct device *dev, struct device_attribute *attr, char *buf) @@ -288,9 +285,13 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev, return count; } +DEVICE_ATTR(fifo_starve_off, 0644, gfar_show_fifo_starve_off, + gfar_set_fifo_starve_off); + void gfar_init_sysfs(struct net_device *dev) { struct gfar_private *priv = netdev_priv(dev); + int rc; /* Initialize the default values */ priv->rx_stash_size = DEFAULT_STASH_LENGTH; @@ -301,11 +302,12 @@ void gfar_init_sysfs(struct net_device *dev) priv->bd_stash_en = DEFAULT_BD_STASH; /* Create our sysfs files */ - GFAR_CREATE_FILE(dev, bd_stash); - GFAR_CREATE_FILE(dev, rx_stash_size); - GFAR_CREATE_FILE(dev, rx_stash_index); - GFAR_CREATE_FILE(dev, fifo_threshold); - GFAR_CREATE_FILE(dev, fifo_starve); - GFAR_CREATE_FILE(dev, fifo_starve_off); - + rc = device_create_file(&dev->dev, &dev_attr_bd_stash); + rc |= device_create_file(&dev->dev, &dev_attr_rx_stash_size); + rc |= device_create_file(&dev->dev, &dev_attr_rx_stash_index); + rc |= device_create_file(&dev->dev, &dev_attr_fifo_threshold); + rc |= device_create_file(&dev->dev, &dev_attr_fifo_starve); + rc |= device_create_file(&dev->dev, &dev_attr_fifo_starve_off); + if (rc) + dev_err(&dev->dev, "Error creating gianfar sysfs files.\n"); }