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: Anton Blanchard <anton@samba.org> Signed-off-by: Santiago Leon <santil@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ab78df75ca
commit
d2684b5160
|
@ -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 @@
|
||||||
#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);
|
||||||
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_
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue