atmel: Don't use create_proc_read_entry()
authorDavid Howells <dhowells@redhat.com>
Wed, 10 Apr 2013 15:50:58 +0000 (16:50 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 29 Apr 2013 19:41:56 +0000 (15:41 -0400)
Don't use create_proc_read_entry() as that is deprecated, but rather use
proc_create_data() and seq_file instead.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Simon Kelley <simon@thekelleys.org.uk>
cc: John W. Linville <linville@tuxdriver.com>
cc: linux-wireless@vger.kernel.org
cc: netdev@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/net/wireless/atmel.c

index 4374079dfc2a031d6faa0a2819c69e1b9c49885f..23a3498f14d4a60d81f6e8cc4cfd4472d3f5baf2 100644 (file)
@@ -63,6 +63,7 @@
 #include <net/iw_handler.h>
 #include <linux/crc32.h>
 #include <linux/proc_fs.h>
+#include <linux/seq_file.h>
 #include <linux/device.h>
 #include <linux/moduleparam.h>
 #include <linux/firmware.h>
@@ -1409,30 +1410,28 @@ static int atmel_validate_channel(struct atmel_private *priv, int channel)
        return 0;
 }
 
-static int atmel_proc_output (char *buf, struct atmel_private *priv)
+static int atmel_proc_show(struct seq_file *m, void *v)
 {
+       struct atmel_private *priv = m->private;
        int i;
-       char *p = buf;
        char *s, *r, *c;
 
-       p += sprintf(p, "Driver version:\t\t%d.%d\n",
-                    DRIVER_MAJOR, DRIVER_MINOR);
+       seq_printf(m, "Driver version:\t\t%d.%d\n", DRIVER_MAJOR, DRIVER_MINOR);
 
        if (priv->station_state != STATION_STATE_DOWN) {
-               p += sprintf(p, "Firmware version:\t%d.%d build %d\n"
-                               "Firmware location:\t",
-                            priv->host_info.major_version,
-                            priv->host_info.minor_version,
-                            priv->host_info.build_version);
+               seq_printf(m,
+                          "Firmware version:\t%d.%d build %d\n"
+                          "Firmware location:\t",
+                          priv->host_info.major_version,
+                          priv->host_info.minor_version,
+                          priv->host_info.build_version);
 
                if (priv->card_type != CARD_TYPE_EEPROM)
-                       p += sprintf(p, "on card\n");
+                       seq_puts(m, "on card\n");
                else if (priv->firmware)
-                       p += sprintf(p, "%s loaded by host\n",
-                                    priv->firmware_id);
+                       seq_printf(m, "%s loaded by host\n", priv->firmware_id);
                else
-                       p += sprintf(p, "%s loaded by hotplug\n",
-                                    priv->firmware_id);
+                       seq_printf(m, "%s loaded by hotplug\n", priv->firmware_id);
 
                switch (priv->card_type) {
                case CARD_TYPE_PARALLEL_FLASH:
@@ -1453,12 +1452,12 @@ static int atmel_proc_output (char *buf, struct atmel_private *priv)
                        if (priv->reg_domain == channel_table[i].reg_domain)
                                r = channel_table[i].name;
 
-               p += sprintf(p, "MAC memory type:\t%s\n", c);
-               p += sprintf(p, "Regulatory domain:\t%s\n", r);
-               p += sprintf(p, "Host CRC checking:\t%s\n",
-                            priv->do_rx_crc ? "On" : "Off");
-               p += sprintf(p, "WPA-capable firmware:\t%s\n",
-                            priv->use_wpa ? "Yes" : "No");
+               seq_printf(m, "MAC memory type:\t%s\n", c);
+               seq_printf(m, "Regulatory domain:\t%s\n", r);
+               seq_printf(m, "Host CRC checking:\t%s\n",
+                        priv->do_rx_crc ? "On" : "Off");
+               seq_printf(m, "WPA-capable firmware:\t%s\n",
+                        priv->use_wpa ? "Yes" : "No");
        }
 
        switch (priv->station_state) {
@@ -1490,26 +1489,22 @@ static int atmel_proc_output (char *buf, struct atmel_private *priv)
                s = "<unknown>";
        }
 
-       p += sprintf(p, "Current state:\t\t%s\n", s);
-       return p - buf;
+       seq_printf(m, "Current state:\t\t%s\n", s);
+       return 0;
 }
 
-static int atmel_read_proc(char *page, char **start, off_t off,
-                          int count, int *eof, void *data)
+static int atmel_proc_open(struct inode *inode, struct file *file)
 {
-       struct atmel_private *priv = data;
-       int len = atmel_proc_output (page, priv);
-       if (len <= off+count)
-               *eof = 1;
-       *start = page + off;
-       len -= off;
-       if (len > count)
-               len = count;
-       if (len < 0)
-               len = 0;
-       return len;
+       return single_open(file, atmel_proc_show, PDE_DATA(inode));
 }
 
+static const struct file_operations atmel_proc_fops = {
+       .open           = atmel_proc_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+       .release        = seq_release,
+};
+
 static const struct net_device_ops atmel_netdev_ops = {
        .ndo_open               = atmel_open,
        .ndo_stop               = atmel_close,
@@ -1525,7 +1520,6 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,
                                   struct device *sys_dev,
                                   int (*card_present)(void *), void *card)
 {
-       struct proc_dir_entry *ent;
        struct net_device *dev;
        struct atmel_private *priv;
        int rc;
@@ -1630,8 +1624,7 @@ struct net_device *init_atmel_card(unsigned short irq, unsigned long port,
 
        netif_carrier_off(dev);
 
-       ent = create_proc_read_entry ("driver/atmel", 0, NULL, atmel_read_proc, priv);
-       if (!ent)
+       if (!proc_create_data("driver/atmel", 0, NULL, &atmel_proc_fops, priv));
                printk(KERN_WARNING "atmel: unable to create /proc entry.\n");
 
        printk(KERN_INFO "%s: Atmel at76c50x. Version %d.%d. MAC %pM\n",