On Friday 15 December 2006 21:27, Stephen Hemminger wrote:
> The netxen driver includes a private ioctl that provides access
> to functionality that is already available in other ways. The PCI
> layer has application access hooks (see setpci), and the statistics
> are available in ethtool/netstats.

Thanks.
We needed ioctls mainly for debugging a tool and for flashing. We'll soon send 
a patch to make our flash tool work through ethtool interface. Should be much 
cleaner.

-Amit

>
> Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]>
> ---
>  drivers/net/netxen/netxen_nic.h         |   11 -
>  drivers/net/netxen/netxen_nic_ethtool.c |    5 -
>  drivers/net/netxen/netxen_nic_hw.c      |  294
> ------------------------------- drivers/net/netxen/netxen_nic_init.c    | 
> 237 ------------------------- drivers/net/netxen/netxen_nic_ioctl.h   |  
> 77 --------
>  drivers/net/netxen/netxen_nic_main.c    |   45 -----
>  6 files changed, 1 insertions(+), 668 deletions(-)
>
> diff --git a/drivers/net/netxen/netxen_nic.h
> b/drivers/net/netxen/netxen_nic.h index b5410be..b4c4fc0 100644
> --- a/drivers/net/netxen/netxen_nic.h
> +++ b/drivers/net/netxen/netxen_nic.h
> @@ -1027,14 +1027,6 @@ int netxen_nic_hw_read_wx(struct netxen_
>                         int len);
>  int netxen_nic_hw_write_wx(struct netxen_adapter *adapter, u64 off, void
> *data, int len);
> -int netxen_nic_hw_read_ioctl(struct netxen_adapter *adapter, u64 off,
> -                          void *data, int len);
> -int netxen_nic_hw_write_ioctl(struct netxen_adapter *adapter, u64 off,
> -                           void *data, int len);
> -int netxen_nic_pci_mem_write_ioctl(struct netxen_adapter *adapter,
> -                                u64 off, void *data, int size);
> -int netxen_nic_pci_mem_read_ioctl(struct netxen_adapter *adapter,
> -                               u64 off, void *data, int size);
>  void netxen_crb_writelit_adapter(struct netxen_adapter *adapter,
>                                unsigned long off, int data);
>
> @@ -1067,9 +1059,6 @@ void netxen_tso_check(struct netxen_adap
>                     struct cmd_desc_type0 *desc, struct sk_buff *skb);
>  int netxen_nic_hw_resources(struct netxen_adapter *adapter);
>  void netxen_nic_clear_stats(struct netxen_adapter *adapter);
> -int
> -netxen_nic_do_ioctl(struct netxen_adapter *adapter, void *u_data,
> -                 struct netxen_port *port);
>  int netxen_nic_rx_has_work(struct netxen_adapter *adapter);
>  int netxen_nic_tx_has_work(struct netxen_adapter *adapter);
>  void netxen_watchdog_task(struct work_struct *work);
> diff --git a/drivers/net/netxen/netxen_nic_ethtool.c
> b/drivers/net/netxen/netxen_nic_ethtool.c index 2ab4885..3404461 100644
> --- a/drivers/net/netxen/netxen_nic_ethtool.c
> +++ b/drivers/net/netxen/netxen_nic_ethtool.c
> @@ -42,7 +42,6 @@ #include <linux/version.h>
>  #include "netxen_nic_hw.h"
>  #include "netxen_nic.h"
>  #include "netxen_nic_phan_reg.h"
> -#include "netxen_nic_ioctl.h"
>
>  struct netxen_nic_stats {
>       char stat_string[ETH_GSTRING_LEN];
> @@ -79,8 +78,7 @@ static const struct netxen_nic_stats net
>       {"tx_bytes", NETXEN_NIC_STAT(stats.txbytes)},
>  };
>
> -#define NETXEN_NIC_STATS_LEN \
> -     sizeof(netxen_nic_gstrings_stats) / sizeof(struct netxen_nic_stats)
> +#define NETXEN_NIC_STATS_LEN ARRAY_SIZE(netxen_nic_gstrings_stats)
>
>  static const char netxen_nic_gstrings_test[][ETH_GSTRING_LEN] = {
>       "Register_Test_offline", "EEPROM_Test_offline",
> @@ -711,7 +709,6 @@ netxen_nic_get_ethtool_stats(struct net_
>                   (netxen_nic_gstrings_stats[index].sizeof_stat ==
>                    sizeof(u64)) ? *(u64 *) p : *(u32 *) p;
>       }
> -
>  }
>
>  struct ethtool_ops netxen_nic_ethtool_ops = {
> diff --git a/drivers/net/netxen/netxen_nic_hw.c
> b/drivers/net/netxen/netxen_nic_hw.c index 9147b60..5dac50c 100644
> --- a/drivers/net/netxen/netxen_nic_hw.c
> +++ b/drivers/net/netxen/netxen_nic_hw.c
> @@ -997,297 +997,3 @@ void netxen_nic_flash_print(struct netxe
>                      fw_major, fw_minor);
>  }
>
> -int netxen_crb_read_val(struct netxen_adapter *adapter, unsigned long off)
> -{
> -     int data;
> -     netxen_nic_hw_read_wx(adapter, off, &data, 4);
> -     return data;
> -}
> -
> -int netxen_nic_hw_write_ioctl(struct netxen_adapter *adapter, u64 off,
> -                           void *data, int len)
> -{
> -     void *addr;
> -     u64 offset = off;
> -     u8 *mem_ptr = NULL;
> -     unsigned long mem_base;
> -     unsigned long mem_page;
> -
> -     if (ADDR_IN_WINDOW1(off)) {
> -             addr = NETXEN_CRB_NORMALIZE(adapter, off);
> -             if (!addr) {
> -                     mem_base = pci_resource_start(adapter->ahw.pdev, 0);
> -                     offset = NETXEN_CRB_NORMAL(off);
> -                     mem_page = offset & PAGE_MASK;
> -                     if (mem_page != ((offset + len - 1) & PAGE_MASK))
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE * 2);
> -                     else
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE);
> -                     if (mem_ptr == 0UL) {
> -                             return 1;
> -                     }
> -                     addr = mem_ptr;
> -                     addr += offset & (PAGE_SIZE - 1);
> -             }
> -     } else {
> -             addr = pci_base_offset(adapter, off);
> -             if (!addr) {
> -                     mem_base = pci_resource_start(adapter->ahw.pdev, 0);
> -                     mem_page = off & PAGE_MASK;
> -                     if (mem_page != ((off + len - 1) & PAGE_MASK))
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE * 2);
> -                     else
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE);
> -                     if (mem_ptr == 0UL) {
> -                             return 1;
> -                     }
> -                     addr = mem_ptr;
> -                     addr += off & (PAGE_SIZE - 1);
> -             }
> -             netxen_nic_pci_change_crbwindow(adapter, 0);
> -     }
> -     switch (len) {
> -     case 1:
> -             writeb(*(u8 *) data, addr);
> -             break;
> -     case 2:
> -             writew(*(u16 *) data, addr);
> -             break;
> -     case 4:
> -             writel(*(u32 *) data, addr);
> -             break;
> -     case 8:
> -             writeq(*(u64 *) data, addr);
> -             break;
> -     default:
> -             DPRINTK(INFO,
> -                     "writing data %lx to offset %llx, num words=%d\n",
> -                     *(unsigned long *)data, off, (len >> 3));
> -
> -             netxen_nic_hw_block_write64((u64 __iomem *) data, addr,
> -                                         (len >> 3));
> -             break;
> -     }
> -
> -     if (!ADDR_IN_WINDOW1(off))
> -             netxen_nic_pci_change_crbwindow(adapter, 1);
> -     if (mem_ptr)
> -             iounmap(mem_ptr);
> -     return 0;
> -}
> -
> -int netxen_nic_hw_read_ioctl(struct netxen_adapter *adapter, u64 off,
> -                          void *data, int len)
> -{
> -     void *addr;
> -     u64 offset;
> -     u8 *mem_ptr = NULL;
> -     unsigned long mem_base;
> -     unsigned long mem_page;
> -
> -     if (ADDR_IN_WINDOW1(off)) {
> -             addr = NETXEN_CRB_NORMALIZE(adapter, off);
> -             if (!addr) {
> -                     mem_base = pci_resource_start(adapter->ahw.pdev, 0);
> -                     offset = NETXEN_CRB_NORMAL(off);
> -                     mem_page = offset & PAGE_MASK;
> -                     if (mem_page != ((offset + len - 1) & PAGE_MASK))
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE * 2);
> -                     else
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE);
> -                     if (mem_ptr == 0UL) {
> -                             *(u8 *) data = 0;
> -                             return 1;
> -                     }
> -                     addr = mem_ptr;
> -                     addr += offset & (PAGE_SIZE - 1);
> -             }
> -     } else {
> -             addr = pci_base_offset(adapter, off);
> -             if (!addr) {
> -                     mem_base = pci_resource_start(adapter->ahw.pdev, 0);
> -                     mem_page = off & PAGE_MASK;
> -                     if (mem_page != ((off + len - 1) & PAGE_MASK))
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE * 2);
> -                     else
> -                             mem_ptr =
> -                                 ioremap(mem_base + mem_page, PAGE_SIZE);
> -                     if (mem_ptr == 0UL)
> -                             return 1;
> -                     addr = mem_ptr;
> -                     addr += off & (PAGE_SIZE - 1);
> -             }
> -             netxen_nic_pci_change_crbwindow(adapter, 0);
> -     }
> -     switch (len) {
> -     case 1:
> -             *(u8 *) data = readb(addr);
> -             break;
> -     case 2:
> -             *(u16 *) data = readw(addr);
> -             break;
> -     case 4:
> -             *(u32 *) data = readl(addr);
> -             break;
> -     case 8:
> -             *(u64 *) data = readq(addr);
> -             break;
> -     default:
> -             netxen_nic_hw_block_read64((u64 __iomem *) data, addr,
> -                                        (len >> 3));
> -             break;
> -     }
> -     if (!ADDR_IN_WINDOW1(off))
> -             netxen_nic_pci_change_crbwindow(adapter, 1);
> -     if (mem_ptr)
> -             iounmap(mem_ptr);
> -     return 0;
> -}
> -
> -int netxen_nic_pci_mem_write_ioctl(struct netxen_adapter *adapter, u64
> off, -                                   void *data, int size)
> -{
> -     void *addr;
> -     int ret = 0;
> -     u8 *mem_ptr = NULL;
> -     unsigned long mem_base;
> -     unsigned long mem_page;
> -
> -     if (data == NULL || off > (128 * 1024 * 1024)) {
> -             printk(KERN_ERR "%s: data: %p off:%llx\n",
> -                    netxen_nic_driver_name, data, off);
> -             return 1;
> -     }
> -     off = netxen_nic_pci_set_window(adapter, off);
> -     /* Corner case : Malicious user tried to break the driver by reading
> -        last few bytes in ranges and tries to read further addresses.
> -      */
> -     if (!pci_base(adapter, off + size - 1) && pci_base(adapter, off)) {
> -             printk(KERN_ERR "%s: Invalid access to memory address range"
> -                    " 0x%llx - 0x%llx\n", netxen_nic_driver_name, off,
> -                    off + size);
> -             return 1;
> -     }
> -     addr = pci_base_offset(adapter, off);
> -     DPRINTK(INFO, "writing data %llx to offset %llx\n",
> -             *(unsigned long long *)data, off);
> -     if (!addr) {
> -             mem_base = pci_resource_start(adapter->ahw.pdev, 0);
> -             mem_page = off & PAGE_MASK;
> -             /* Map two pages whenever user tries to access addresses in two
> -                consecutive pages.
> -              */
> -             if (mem_page != ((off + size - 1) & PAGE_MASK))
> -                     mem_ptr = ioremap(mem_base + mem_page, PAGE_SIZE * 2);
> -             else
> -                     mem_ptr = ioremap(mem_base + mem_page, PAGE_SIZE);
> -             if (mem_ptr == 0UL) {
> -                     return 1;
> -             }
> -             addr = mem_ptr;
> -             addr += off & (PAGE_SIZE - 1);
> -     }
> -     switch (size) {
> -     case 1:
> -             writeb(*(u8 *) data, addr);
> -             break;
> -     case 2:
> -             writew(*(u16 *) data, addr);
> -             break;
> -     case 4:
> -             writel(*(u32 *) data, addr);
> -             break;
> -     case 8:
> -             writeq(*(u64 *) data, addr);
> -             break;
> -     default:
> -             DPRINTK(INFO,
> -                     "writing data %lx to offset %llx, num words=%d\n",
> -                     *(unsigned long *)data, off, (size >> 3));
> -
> -             netxen_nic_hw_block_write64((u64 __iomem *) data, addr,
> -                                         (size >> 3));
> -             break;
> -     }
> -
> -     if (mem_ptr)
> -             iounmap(mem_ptr);
> -     DPRINTK(INFO, "wrote %llx\n", *(unsigned long long *)data);
> -
> -     return ret;
> -}
> -
> -int netxen_nic_pci_mem_read_ioctl(struct netxen_adapter *adapter,
> -                               u64 off, void *data, int size)
> -{
> -     void *addr;
> -     int ret = 0;
> -     u8 *mem_ptr = NULL;
> -     unsigned long mem_base;
> -     unsigned long mem_page;
> -
> -     if (data == NULL || off > (128 * 1024 * 1024)) {
> -             printk(KERN_ERR "%s: data: %p off:%llx\n",
> -                    netxen_nic_driver_name, data, off);
> -             return 1;
> -     }
> -     off = netxen_nic_pci_set_window(adapter, off);
> -     /* Corner case : Malicious user tried to break the driver by reading
> -        last few bytes in ranges and tries to read further addresses.
> -      */
> -     if (!pci_base(adapter, off + size - 1) && pci_base(adapter, off)) {
> -             printk(KERN_ERR "%s: Invalid access to memory address range"
> -                    " 0x%llx - 0x%llx\n", netxen_nic_driver_name, off,
> -                    off + size);
> -             return 1;
> -     }
> -     addr = pci_base_offset(adapter, off);
> -     if (!addr) {
> -             mem_base = pci_resource_start(adapter->ahw.pdev, 0);
> -             mem_page = off & PAGE_MASK;
> -             /* Map two pages whenever user tries to access addresses in two
> -                consecutive pages.
> -              */
> -             if (mem_page != ((off + size - 1) & PAGE_MASK))
> -                     mem_ptr = ioremap(mem_base + mem_page, PAGE_SIZE * 2);
> -             else
> -                     mem_ptr = ioremap(mem_base + mem_page, PAGE_SIZE);
> -             if (mem_ptr == 0UL) {
> -                     *(u8 *) data = 0;
> -                     return 1;
> -             }
> -             addr = mem_ptr;
> -             addr += off & (PAGE_SIZE - 1);
> -     }
> -     switch (size) {
> -     case 1:
> -             *(u8 *) data = readb(addr);
> -             break;
> -     case 2:
> -             *(u16 *) data = readw(addr);
> -             break;
> -     case 4:
> -             *(u32 *) data = readl(addr);
> -             break;
> -     case 8:
> -             *(u64 *) data = readq(addr);
> -             break;
> -     default:
> -             netxen_nic_hw_block_read64((u64 __iomem *) data, addr,
> -                                        (size >> 3));
> -             break;
> -     }
> -
> -     if (mem_ptr)
> -             iounmap(mem_ptr);
> -     DPRINTK(INFO, "read %llx\n", *(unsigned long long *)data);
> -
> -     return ret;
> -}
> diff --git a/drivers/net/netxen/netxen_nic_init.c
> b/drivers/net/netxen/netxen_nic_init.c index 869725f..deacc61 100644
> --- a/drivers/net/netxen/netxen_nic_init.c
> +++ b/drivers/net/netxen/netxen_nic_init.c
> @@ -35,7 +35,6 @@ #include <linux/netdevice.h>
>  #include <linux/delay.h>
>  #include "netxen_nic.h"
>  #include "netxen_nic_hw.h"
> -#include "netxen_nic_ioctl.h"
>  #include "netxen_nic_phan_reg.h"
>
>  struct crb_addr_pair {
> @@ -1273,52 +1272,6 @@ int netxen_nic_tx_has_work(struct netxen
>       return 0;
>  }
>
> -int
> -netxen_nic_fill_statistics(struct netxen_adapter *adapter,
> -                        struct netxen_port *port,
> -                        struct netxen_statistics *netxen_stats)
> -{
> -     void __iomem *addr;
> -
> -     if (adapter->ahw.board_type == NETXEN_NIC_XGBE) {
> -             netxen_nic_pci_change_crbwindow(adapter, 0);
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_TX_BYTE_CNT,
> -                                        &(netxen_stats->tx_bytes));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_TX_FRAME_CNT,
> -                                        &(netxen_stats->tx_packets));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_RX_BYTE_CNT,
> -                                        &(netxen_stats->rx_bytes));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_RX_FRAME_CNT,
> -                                        &(netxen_stats->rx_packets));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_AGGR_ERROR_CNT,
> -                                        &(netxen_stats->rx_errors));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_CRC_ERROR_CNT,
> -                                        &(netxen_stats->rx_crc_errors));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_OVERSIZE_FRAME_ERR,
> -                                        &(netxen_stats->
> -                                          rx_long_length_error));
> -             NETXEN_NIC_LOCKED_READ_REG(NETXEN_NIU_XGE_UNDERSIZE_FRAME_ERR,
> -                                        &(netxen_stats->
> -                                          rx_short_length_error));
> -
> -             netxen_nic_pci_change_crbwindow(adapter, 1);
> -     } else {
> -             spin_lock_bh(&adapter->tx_lock);
> -             netxen_stats->tx_bytes = port->stats.txbytes;
> -             netxen_stats->tx_packets = port->stats.xmitedframes +
> -                 port->stats.xmitfinished;
> -             netxen_stats->rx_bytes = port->stats.rxbytes;
> -             netxen_stats->rx_packets = port->stats.no_rcv;
> -             netxen_stats->rx_errors = port->stats.rcvdbadskb;
> -             netxen_stats->tx_errors = port->stats.nocmddescriptor;
> -             netxen_stats->rx_short_length_error = port->stats.uplcong;
> -             netxen_stats->rx_long_length_error = port->stats.uphcong;
> -             netxen_stats->rx_crc_errors = 0;
> -             netxen_stats->rx_mac_errors = 0;
> -             spin_unlock_bh(&adapter->tx_lock);
> -     }
> -     return 0;
> -}
>
>  void netxen_nic_clear_stats(struct netxen_adapter *adapter)
>  {
> @@ -1332,193 +1285,3 @@ void netxen_nic_clear_stats(struct netxe
>       }
>  }
>
> -int
> -netxen_nic_clear_statistics(struct netxen_adapter *adapter,
> -                         struct netxen_port *port)
> -{
> -     int data = 0;
> -
> -     netxen_nic_pci_change_crbwindow(adapter, 0);
> -
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_TX_BYTE_CNT, &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_TX_FRAME_CNT,
> -                                 &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_RX_BYTE_CNT, &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_RX_FRAME_CNT,
> -                                 &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_AGGR_ERROR_CNT,
> -                                 &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_CRC_ERROR_CNT,
> -                                 &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_OVERSIZE_FRAME_ERR,
> -                                 &data);
> -     netxen_nic_locked_write_reg(adapter, NETXEN_NIU_XGE_UNDERSIZE_FRAME_ERR,
> -                                 &data);
> -
> -     netxen_nic_pci_change_crbwindow(adapter, 1);
> -     netxen_nic_clear_stats(adapter);
> -     return 0;
> -}
> -
> -int
> -netxen_nic_do_ioctl(struct netxen_adapter *adapter, void *u_data,
> -                 struct netxen_port *port)
> -{
> -     struct netxen_nic_ioctl_data data;
> -     struct netxen_nic_ioctl_data *up_data;
> -     int retval = 0;
> -     struct netxen_statistics netxen_stats;
> -
> -     up_data = (void *)u_data;
> -
> -     DPRINTK(INFO, "doing ioctl for %p\n", adapter);
> -     if (copy_from_user(&data, (void __user *)up_data, sizeof(data))) {
> -             /* evil user tried to crash the kernel */
> -             DPRINTK(ERR, "bad copy from userland: %d\n", (int)sizeof(data));
> -             retval = -EFAULT;
> -             goto error_out;
> -     }
> -
> -     /* Shouldn't access beyond legal limits of  "char u[64];" member */
> -     if (!data.ptr && (data.size > sizeof(data.u))) {
> -             /* evil user tried to crash the kernel */
> -             DPRINTK(ERR, "bad size: %d\n", data.size);
> -             retval = -EFAULT;
> -             goto error_out;
> -     }
> -
> -     switch (data.cmd) {
> -     case netxen_nic_cmd_pci_read:
> -             if ((retval = netxen_nic_hw_read_ioctl(adapter, data.off,
> -                                                    &(data.u), data.size)))
> -                     goto error_out;
> -             if (copy_to_user
> -                 ((void __user *)&(up_data->u), &(data.u), data.size)) {
> -                     DPRINTK(ERR, "bad copy to userland: %d\n",
> -                             (int)sizeof(data));
> -                     retval = -EFAULT;
> -                     goto error_out;
> -             }
> -             data.rv = 0;
> -             break;
> -
> -     case netxen_nic_cmd_pci_write:
> -             if ((retval = netxen_nic_hw_write_ioctl(adapter, data.off,
> -                                                     &(data.u), data.size)))
> -                     goto error_out;
> -             data.rv = 0;
> -             break;
> -
> -     case netxen_nic_cmd_pci_mem_read:
> -             if (netxen_nic_pci_mem_read_ioctl(adapter, data.off, &(data.u),
> -                                               data.size)) {
> -                     DPRINTK(ERR, "Failed to read the data.\n");
> -                     retval = -EFAULT;
> -                     goto error_out;
> -             }
> -             if (copy_to_user
> -                 ((void __user *)&(up_data->u), &(data.u), data.size)) {
> -                     DPRINTK(ERR, "bad copy to userland: %d\n",
> -                             (int)sizeof(data));
> -                     retval = -EFAULT;
> -                     goto error_out;
> -             }
> -             data.rv = 0;
> -             break;
> -
> -     case netxen_nic_cmd_pci_mem_write:
> -             if ((retval = netxen_nic_pci_mem_write_ioctl(adapter, data.off,
> -                                                          &(data.u),
> -                                                          data.size)))
> -                     goto error_out;
> -             data.rv = 0;
> -             break;
> -
> -     case netxen_nic_cmd_pci_config_read:
> -             switch (data.size) {
> -             case 1:
> -                     data.rv = pci_read_config_byte(adapter->ahw.pdev,
> -                                                    data.off,
> -                                                    (char *)&(data.u));
> -                     break;
> -             case 2:
> -                     data.rv = pci_read_config_word(adapter->ahw.pdev,
> -                                                    data.off,
> -                                                    (short *)&(data.u));
> -                     break;
> -             case 4:
> -                     data.rv = pci_read_config_dword(adapter->ahw.pdev,
> -                                                     data.off,
> -                                                     (u32 *) & (data.u));
> -                     break;
> -             }
> -             if (copy_to_user
> -                 ((void __user *)&(up_data->u), &(data.u), data.size)) {
> -                     DPRINTK(ERR, "bad copy to userland: %d\n",
> -                             (int)sizeof(data));
> -                     retval = -EFAULT;
> -                     goto error_out;
> -             }
> -             break;
> -
> -     case netxen_nic_cmd_pci_config_write:
> -             switch (data.size) {
> -             case 1:
> -                     data.rv = pci_write_config_byte(adapter->ahw.pdev,
> -                                                     data.off,
> -                                                     *(char *)&(data.u));
> -                     break;
> -             case 2:
> -                     data.rv = pci_write_config_word(adapter->ahw.pdev,
> -                                                     data.off,
> -                                                     *(short *)&(data.u));
> -                     break;
> -             case 4:
> -                     data.rv = pci_write_config_dword(adapter->ahw.pdev,
> -                                                      data.off,
> -                                                      *(u32 *) & (data.u));
> -                     break;
> -             }
> -             break;
> -
> -     case netxen_nic_cmd_get_stats:
> -             data.rv =
> -                 netxen_nic_fill_statistics(adapter, port, &netxen_stats);
> -             if (copy_to_user
> -                 ((void __user *)(up_data->ptr), (void *)&netxen_stats,
> -                  sizeof(struct netxen_statistics))) {
> -                     DPRINTK(ERR, "bad copy to userland: %d\n",
> -                             (int)sizeof(netxen_stats));
> -                     retval = -EFAULT;
> -                     goto error_out;
> -             }
> -             up_data->rv = data.rv;
> -             break;
> -
> -     case netxen_nic_cmd_clear_stats:
> -             data.rv = netxen_nic_clear_statistics(adapter, port);
> -             up_data->rv = data.rv;
> -             break;
> -
> -     case netxen_nic_cmd_get_version:
> -             if (copy_to_user
> -                 ((void __user *)&(up_data->u), NETXEN_NIC_LINUX_VERSIONID,
> -                  sizeof(NETXEN_NIC_LINUX_VERSIONID))) {
> -                     DPRINTK(ERR, "bad copy to userland: %d\n",
> -                             (int)sizeof(data));
> -                     retval = -EFAULT;
> -                     goto error_out;
> -             }
> -             break;
> -
> -     default:
> -             DPRINTK(INFO, "bad command %d for %p\n", data.cmd, adapter);
> -             retval = -EOPNOTSUPP;
> -             goto error_out;
> -     }
> -     put_user(data.rv, (&(up_data->rv)));
> -     DPRINTK(INFO, "done ioctl for %p well.\n", adapter);
> -
> -      error_out:
> -     return retval;
> -}
> diff --git a/drivers/net/netxen/netxen_nic_ioctl.h
> b/drivers/net/netxen/netxen_nic_ioctl.h deleted file mode 100644
> index 1221fa5..0000000
> --- a/drivers/net/netxen/netxen_nic_ioctl.h
> +++ /dev/null
> @@ -1,77 +0,0 @@
> -/*
> - * Copyright (C) 2003 - 2006 NetXen, Inc.
> - * All rights reserved.
> - *
> - * This program is free software; you can redistribute it and/or
> - * modify it under the terms of the GNU General Public License
> - * as published by the Free Software Foundation; either version 2
> - * of the License, or (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful, but
> - * WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
> - * MA  02111-1307, USA.
> - *
> - * The full GNU General Public License is included in this distribution
> - * in the file called LICENSE.
> - *
> - * Contact Information:
> - *    [EMAIL PROTECTED]
> - * NetXen,
> - * 3965 Freedom Circle, Fourth floor,
> - * Santa Clara, CA 95054
> - */
> -
> -#ifndef __NETXEN_NIC_IOCTL_H__
> -#define __NETXEN_NIC_IOCTL_H__
> -
> -#include <linux/sockios.h>
> -
> -#define NETXEN_CMD_START     SIOCDEVPRIVATE
> -#define NETXEN_NIC_CMD               (NETXEN_CMD_START + 1)
> -#define NETXEN_NIC_NAME              (NETXEN_CMD_START + 2)
> -#define NETXEN_NIC_NAME_LEN  16
> -#define NETXEN_NIC_NAME_RSP  "NETXEN-UNM"
> -
> -typedef enum {
> -     netxen_nic_cmd_none = 0,
> -     netxen_nic_cmd_pci_read,
> -     netxen_nic_cmd_pci_write,
> -     netxen_nic_cmd_pci_mem_read,
> -     netxen_nic_cmd_pci_mem_write,
> -     netxen_nic_cmd_pci_config_read,
> -     netxen_nic_cmd_pci_config_write,
> -     netxen_nic_cmd_get_stats,
> -     netxen_nic_cmd_clear_stats,
> -     netxen_nic_cmd_get_version
> -} netxen_nic_ioctl_cmd_t;
> -
> -struct netxen_nic_ioctl_data {
> -     u32 cmd;
> -     u32 unused1;
> -     u64 off;
> -     u32 size;
> -     u32 rv;
> -     char u[64];
> -     void *ptr;
> -};
> -
> -struct netxen_statistics {
> -     u64 rx_packets;
> -     u64 tx_packets;
> -     u64 rx_bytes;
> -     u64 rx_errors;
> -     u64 tx_bytes;
> -     u64 tx_errors;
> -     u64 rx_crc_errors;
> -     u64 rx_short_length_error;
> -     u64 rx_long_length_error;
> -     u64 rx_mac_errors;
> -};
> -
> -#endif                               /* __NETXEN_NIC_IOCTL_H_ */
> diff --git a/drivers/net/netxen/netxen_nic_main.c
> b/drivers/net/netxen/netxen_nic_main.c index 575b71b..1658ca1 100644
> --- a/drivers/net/netxen/netxen_nic_main.c
> +++ b/drivers/net/netxen/netxen_nic_main.c
> @@ -38,7 +38,6 @@ #include "netxen_nic_hw.h"
>  #include "netxen_nic.h"
>  #define DEFINE_GLOBAL_RECV_CRB
>  #include "netxen_nic_phan_reg.h"
> -#include "netxen_nic_ioctl.h"
>
>  #include <linux/dma-mapping.h>
>  #include <linux/vmalloc.h>
> @@ -75,8 +74,6 @@ static void netxen_tx_timeout(struct net
>  static void netxen_tx_timeout_task(struct work_struct *work);
>  static void netxen_watchdog(unsigned long);
>  static int netxen_handle_int(struct netxen_adapter *, struct net_device
> *); -static int netxen_nic_ioctl(struct net_device *netdev,
> -                         struct ifreq *ifr, int cmd);
>  static int netxen_nic_poll(struct net_device *dev, int *budget);
>  #ifdef CONFIG_NET_POLL_CONTROLLER
>  static void netxen_nic_poll_controller(struct net_device *netdev);
> @@ -383,7 +380,6 @@ #endif
>               netdev->set_multicast_list = netxen_nic_set_multi;
>               netdev->set_mac_address = netxen_nic_set_mac;
>               netdev->change_mtu = netxen_nic_change_mtu;
> -             netdev->do_ioctl = netxen_nic_ioctl;
>               netdev->tx_timeout = netxen_tx_timeout;
>               netdev->watchdog_timeo = HZ;
>
> @@ -1137,47 +1133,6 @@ static void netxen_nic_poll_controller(s
>       enable_irq(adapter->irq);
>  }
>  #endif
> -/*
> - * netxen_nic_ioctl ()    We provide the tcl/phanmon support through these
> - * ioctls.
> - */
> -static int
> -netxen_nic_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
> -{
> -     int err = 0;
> -     unsigned long nr_bytes = 0;
> -     struct netxen_port *port = netdev_priv(netdev);
> -     struct netxen_adapter *adapter = port->adapter;
> -     char dev_name[NETXEN_NIC_NAME_LEN];
> -
> -     DPRINTK(INFO, "doing ioctl for %s\n", netdev->name);
> -     switch (cmd) {
> -     case NETXEN_NIC_CMD:
> -             err = netxen_nic_do_ioctl(adapter, (void *)ifr->ifr_data, port);
> -             break;
> -
> -     case NETXEN_NIC_NAME:
> -             DPRINTK(INFO, "ioctl cmd for NetXen\n");
> -             if (ifr->ifr_data) {
> -                     sprintf(dev_name, "%s-%d", NETXEN_NIC_NAME_RSP,
> -                             port->portnum);
> -                     nr_bytes =
> -                         copy_to_user((char __user *)ifr->ifr_data, dev_name,
> -                                      NETXEN_NIC_NAME_LEN);
> -                     if (nr_bytes)
> -                             err = -EIO;
> -
> -             }
> -             break;
> -
> -     default:
> -             DPRINTK(INFO, "ioctl cmd %x not supported\n", cmd);
> -             err = -EOPNOTSUPP;
> -             break;
> -     }
> -
> -     return err;
> -}
>
>  static struct pci_driver netxen_driver = {
>       .name = netxen_nic_driver_name,
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to