Commit d2684b51 authored by Santiago Leon's avatar Santiago Leon Committed by David S. Miller

ibmveth: remove procfs code

We export all the driver specific statistics via ethtool, so there is no need
to duplicate this in procfs.
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarSantiago Leon <santil@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ab78df75
...@@ -26,11 +26,6 @@ ...@@ -26,11 +26,6 @@
/* ethernet NICs that are presented to the partition by the hypervisor. */ /* ethernet NICs that are presented to the partition by the hypervisor. */
/* */ /* */
/**************************************************************************/ /**************************************************************************/
/*
TODO:
- add support for sysfs
- possibly remove procfs support
*/
#include <linux/module.h> #include <linux/module.h>
#include <linux/moduleparam.h> #include <linux/moduleparam.h>
...@@ -47,19 +42,16 @@ ...@@ -47,19 +42,16 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/proc_fs.h>
#include <linux/in.h> #include <linux/in.h>
#include <linux/ip.h> #include <linux/ip.h>
#include <linux/ipv6.h> #include <linux/ipv6.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <net/net_namespace.h>
#include <asm/hvcall.h> #include <asm/hvcall.h>
#include <asm/atomic.h> #include <asm/atomic.h>
#include <asm/vio.h> #include <asm/vio.h>
#include <asm/iommu.h> #include <asm/iommu.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/firmware.h> #include <asm/firmware.h>
#include <linux/seq_file.h>
#include "ibmveth.h" #include "ibmveth.h"
...@@ -94,21 +86,12 @@ static int ibmveth_poll(struct napi_struct *napi, int budget); ...@@ -94,21 +86,12 @@ static int ibmveth_poll(struct napi_struct *napi, int budget);
static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *dev); static int ibmveth_start_xmit(struct sk_buff *skb, struct net_device *dev);
static void ibmveth_set_multicast_list(struct net_device *dev); static void ibmveth_set_multicast_list(struct net_device *dev);
static int ibmveth_change_mtu(struct net_device *dev, int new_mtu); static int ibmveth_change_mtu(struct net_device *dev, int new_mtu);
static void ibmveth_proc_register_driver(void);
static void ibmveth_proc_unregister_driver(void);
static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter);
static void ibmveth_proc_unregister_adapter(struct ibmveth_adapter *adapter);
static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance); static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance);
static void ibmveth_rxq_harvest_buffer(struct ibmveth_adapter *adapter); static void ibmveth_rxq_harvest_buffer(struct ibmveth_adapter *adapter);
static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev); static unsigned long ibmveth_get_desired_dma(struct vio_dev *vdev);
static struct kobj_type ktype_veth_pool; static struct kobj_type ktype_veth_pool;
#ifdef CONFIG_PROC_FS
#define IBMVETH_PROC_DIR "ibmveth"
static struct proc_dir_entry *ibmveth_proc_dir;
#endif
static const char ibmveth_driver_name[] = "ibmveth"; static const char ibmveth_driver_name[] = "ibmveth";
static const char ibmveth_driver_string[] = "IBM i/pSeries Virtual Ethernet Driver"; static const char ibmveth_driver_string[] = "IBM i/pSeries Virtual Ethernet Driver";
#define ibmveth_driver_version "1.03" #define ibmveth_driver_version "1.03"
...@@ -1472,8 +1455,6 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ ...@@ -1472,8 +1455,6 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
ibmveth_debug_printk("registered\n"); ibmveth_debug_printk("registered\n");
ibmveth_proc_register_adapter(adapter);
return 0; return 0;
} }
...@@ -1488,103 +1469,12 @@ static int __devexit ibmveth_remove(struct vio_dev *dev) ...@@ -1488,103 +1469,12 @@ static int __devexit ibmveth_remove(struct vio_dev *dev)
unregister_netdev(netdev); unregister_netdev(netdev);
ibmveth_proc_unregister_adapter(adapter);
free_netdev(netdev); free_netdev(netdev);
dev_set_drvdata(&dev->dev, NULL); dev_set_drvdata(&dev->dev, NULL);
return 0; return 0;
} }
#ifdef CONFIG_PROC_FS
static void ibmveth_proc_register_driver(void)
{
ibmveth_proc_dir = proc_mkdir(IBMVETH_PROC_DIR, init_net.proc_net);
if (ibmveth_proc_dir) {
}
}
static void ibmveth_proc_unregister_driver(void)
{
remove_proc_entry(IBMVETH_PROC_DIR, init_net.proc_net);
}
static int ibmveth_show(struct seq_file *seq, void *v)
{
struct ibmveth_adapter *adapter = seq->private;
char *current_mac = (char *) adapter->netdev->dev_addr;
char *firmware_mac = (char *) &adapter->mac_addr;
seq_printf(seq, "%s %s\n\n", ibmveth_driver_string, ibmveth_driver_version);
seq_printf(seq, "Unit Address: 0x%x\n", adapter->vdev->unit_address);
seq_printf(seq, "Current MAC: %pM\n", current_mac);
seq_printf(seq, "Firmware MAC: %pM\n", firmware_mac);
seq_printf(seq, "\nAdapter Statistics:\n");
seq_printf(seq, " TX: vio_map_single failres: %lld\n", adapter->tx_map_failed);
seq_printf(seq, " send failures: %lld\n", adapter->tx_send_failed);
seq_printf(seq, " RX: replenish task cycles: %lld\n", adapter->replenish_task_cycles);
seq_printf(seq, " alloc_skb_failures: %lld\n", adapter->replenish_no_mem);
seq_printf(seq, " add buffer failures: %lld\n", adapter->replenish_add_buff_failure);
seq_printf(seq, " invalid buffers: %lld\n", adapter->rx_invalid_buffer);
seq_printf(seq, " no buffers: %lld\n", adapter->rx_no_buffer);
return 0;
}
static int ibmveth_proc_open(struct inode *inode, struct file *file)
{
return single_open(file, ibmveth_show, PDE(inode)->data);
}
static const struct file_operations ibmveth_proc_fops = {
.owner = THIS_MODULE,
.open = ibmveth_proc_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter)
{
struct proc_dir_entry *entry;
if (ibmveth_proc_dir) {
char u_addr[10];
sprintf(u_addr, "%x", adapter->vdev->unit_address);
entry = proc_create_data(u_addr, S_IFREG, ibmveth_proc_dir,
&ibmveth_proc_fops, adapter);
if (!entry)
ibmveth_error_printk("Cannot create adapter proc entry");
}
}
static void ibmveth_proc_unregister_adapter(struct ibmveth_adapter *adapter)
{
if (ibmveth_proc_dir) {
char u_addr[10];
sprintf(u_addr, "%x", adapter->vdev->unit_address);
remove_proc_entry(u_addr, ibmveth_proc_dir);
}
}
#else /* CONFIG_PROC_FS */
static void ibmveth_proc_register_adapter(struct ibmveth_adapter *adapter)
{
}
static void ibmveth_proc_unregister_adapter(struct ibmveth_adapter *adapter)
{
}
static void ibmveth_proc_register_driver(void)
{
}
static void ibmveth_proc_unregister_driver(void)
{
}
#endif /* CONFIG_PROC_FS */
static struct attribute veth_active_attr; static struct attribute veth_active_attr;
static struct attribute veth_num_attr; static struct attribute veth_num_attr;
static struct attribute veth_size_attr; static struct attribute veth_size_attr;
...@@ -1757,15 +1647,12 @@ static int __init ibmveth_module_init(void) ...@@ -1757,15 +1647,12 @@ static int __init ibmveth_module_init(void)
{ {
ibmveth_printk("%s: %s %s\n", ibmveth_driver_name, ibmveth_driver_string, ibmveth_driver_version); ibmveth_printk("%s: %s %s\n", ibmveth_driver_name, ibmveth_driver_string, ibmveth_driver_version);
ibmveth_proc_register_driver();
return vio_register_driver(&ibmveth_driver); return vio_register_driver(&ibmveth_driver);
} }
static void __exit ibmveth_module_exit(void) static void __exit ibmveth_module_exit(void)
{ {
vio_unregister_driver(&ibmveth_driver); vio_unregister_driver(&ibmveth_driver);
ibmveth_proc_unregister_driver();
} }
module_init(ibmveth_module_init); module_init(ibmveth_module_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment