]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/staging/slicoss/slicoss.c
staging: slicoss Use PCI_DEVICE_TABLE.
[linux-beck.git] / drivers / staging / slicoss / slicoss.c
index a18eeb62f4efba4997ac991f95f13f6da2f179a6..4dbd5aa2d9805c3c52fe732e7c596ba9233147b9 100644 (file)
@@ -194,14 +194,10 @@ MODULE_PARM_DESC(dynamic_intagg, "Dynamic Interrupt Aggregation Setting");
 module_param(intagg_delay, int, 0);
 MODULE_PARM_DESC(intagg_delay, "uSec Interrupt Aggregation Delay");
 
-static struct pci_device_id slic_pci_tbl[] __devinitdata = {
-       {PCI_VENDOR_ID_ALACRITECH,
-        SLIC_1GB_DEVICE_ID,
-        PCI_ANY_ID, PCI_ANY_ID,},
-       {PCI_VENDOR_ID_ALACRITECH,
-        SLIC_2GB_DEVICE_ID,
-        PCI_ANY_ID, PCI_ANY_ID,},
-       {0,}
+static DEFINE_PCI_DEVICE_TABLE(slic_pci_tbl) = {
+       { PCI_DEVICE(PCI_VENDOR_ID_ALACRITECH, SLIC_1GB_DEVICE_ID) },
+       { PCI_DEVICE(PCI_VENDOR_ID_ALACRITECH, SLIC_2GB_DEVICE_ID) },
+       { 0 }
 };
 
 MODULE_DEVICE_TABLE(pci, slic_pci_tbl);
@@ -292,7 +288,7 @@ static void slic_init_adapter(struct net_device *netdev,
 {
        ushort index;
        struct slic_handle *pslic_handle;
-       struct adapter *adapter = (struct adapter *)netdev_priv(netdev);
+       struct adapter *adapter = netdev_priv(netdev);
 
 /*     adapter->pcidev = pcidev;*/
        adapter->vendid = pci_tbl_entry->vendor;
@@ -484,7 +480,7 @@ err_out_disable_pci:
 
 static int slic_entry_open(struct net_device *dev)
 {
-       struct adapter *adapter = (struct adapter *) netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        struct sliccard *card = adapter->card;
        u32 locked = 0;
        int status;
@@ -534,7 +530,7 @@ static void __devexit slic_entry_remove(struct pci_dev *pcidev)
        struct net_device *dev = pci_get_drvdata(pcidev);
        u32 mmio_start = 0;
        uint mmio_len = 0;
-       struct adapter *adapter = (struct adapter *) netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        struct sliccard *card;
        struct mcast_address *mcaddr, *mlist;
 
@@ -581,7 +577,7 @@ static void __devexit slic_entry_remove(struct pci_dev *pcidev)
 
 static int slic_entry_halt(struct net_device *dev)
 {
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        struct sliccard *card = adapter->card;
        __iomem struct slic_regs *slic_regs = adapter->slic_regs;
 
@@ -624,7 +620,7 @@ static int slic_entry_halt(struct net_device *dev)
 
 static int slic_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 {
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        struct ethtool_cmd edata;
        struct ethtool_cmd ecmd;
        u32 data[7];
@@ -787,7 +783,7 @@ static void slic_xmit_build_request(struct adapter *adapter,
 static netdev_tx_t slic_xmit_start(struct sk_buff *skb, struct net_device *dev)
 {
        struct sliccard *card;
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        struct slic_hostcmd *hcmd = NULL;
        u32 status = 0;
        u32 skbtype = NORMAL_ETHFRAME;
@@ -1071,7 +1067,7 @@ static void slic_xmit_complete(struct adapter *adapter)
 static irqreturn_t slic_interrupt(int irq, void *dev_id)
 {
        struct net_device *dev = (struct net_device *)dev_id;
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        u32 isr;
 
        if ((adapter->pshmem) && (adapter->pshmem->isr)) {
@@ -1229,22 +1225,21 @@ static void slic_init_cleanup(struct adapter *adapter)
 
 static struct net_device_stats *slic_get_stats(struct net_device *dev)
 {
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
-       struct net_device_stats *stats;
+       struct adapter *adapter = netdev_priv(dev);
 
        ASSERT(adapter);
-       stats = &adapter->stats;
-       stats->collisions = adapter->slic_stats.iface.xmit_collisions;
-       stats->rx_errors = adapter->slic_stats.iface.rcv_errors;
-       stats->tx_errors = adapter->slic_stats.iface.xmt_errors;
-       stats->rx_missed_errors = adapter->slic_stats.iface.rcv_discards;
-       stats->tx_heartbeat_errors = 0;
-       stats->tx_aborted_errors = 0;
-       stats->tx_window_errors = 0;
-       stats->tx_fifo_errors = 0;
-       stats->rx_frame_errors = 0;
-       stats->rx_length_errors = 0;
-       return &adapter->stats;
+       dev->stats.collisions = adapter->slic_stats.iface.xmit_collisions;
+       dev->stats.rx_errors = adapter->slic_stats.iface.rcv_errors;
+       dev->stats.tx_errors = adapter->slic_stats.iface.xmt_errors;
+       dev->stats.rx_missed_errors = adapter->slic_stats.iface.rcv_discards;
+       dev->stats.tx_heartbeat_errors = 0;
+       dev->stats.tx_aborted_errors = 0;
+       dev->stats.tx_window_errors = 0;
+       dev->stats.tx_fifo_errors = 0;
+       dev->stats.rx_frame_errors = 0;
+       dev->stats.rx_length_errors = 0;
+
+       return &dev->stats;
 }
 
 /*
@@ -1360,7 +1355,7 @@ static void slic_mcast_set_bit(struct adapter *adapter, char *address)
 
 static void slic_mcast_set_list(struct net_device *dev)
 {
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        int status = STATUS_SUCCESS;
        int i;
        char *addresses;
@@ -2523,7 +2518,7 @@ static bool slic_mac_filter(struct adapter *adapter,
 
 static int slic_mac_set_address(struct net_device *dev, void *ptr)
 {
-       struct adapter *adapter = (struct adapter *)netdev_priv(dev);
+       struct adapter *adapter = netdev_priv(dev);
        struct sockaddr *addr = ptr;
 
        if (netif_running(dev))
@@ -2531,6 +2526,9 @@ static int slic_mac_set_address(struct net_device *dev, void *ptr)
        if (!adapter)
                return -EBUSY;
 
+       if (!is_valid_ether_addr(addr->sa_data))
+               return -EINVAL;
+
        memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
        memcpy(adapter->currmacaddr, addr->sa_data, dev->addr_len);
 
@@ -3968,10 +3966,8 @@ static void slic_debug_adapter_create(struct adapter *adapter)
 
 static void slic_debug_adapter_destroy(struct adapter *adapter)
 {
-       if (adapter->debugfs_entry) {
-               debugfs_remove(adapter->debugfs_entry);
-               adapter->debugfs_entry = NULL;
-       }
+       debugfs_remove(adapter->debugfs_entry);
+       adapter->debugfs_entry = NULL;
 }
 
 static void slic_debug_card_create(struct sliccard *card)