zd1211rw: beacon config error checking
[safe/jmp/linux-2.6] / drivers / net / wan / wanxl.c
index 437e0e9..a8a5ca0 100644 (file)
@@ -149,7 +149,10 @@ static inline void wanxl_cable_intr(port_t *port)
        printk(KERN_INFO "%s: %s%s module, %s cable%s%s\n",
               port->dev->name, pm, dte, cable, dsr, dcd);
 
-       hdlc_set_carrier(value & STATUS_CABLE_DCD, port->dev);
+       if (value & STATUS_CABLE_DCD)
+               netif_carrier_on(port->dev);
+       else
+               netif_carrier_off(port->dev);
 }
 
 
@@ -158,7 +161,6 @@ static inline void wanxl_cable_intr(port_t *port)
 static inline void wanxl_tx_intr(port_t *port)
 {
        struct net_device *dev = port->dev;
-       struct net_device_stats *stats = hdlc_stats(dev);
        while (1) {
                 desc_t *desc = &get_status(port)->tx_descs[port->tx_in];
                struct sk_buff *skb = port->tx_skbs[port->tx_in];
@@ -170,13 +172,13 @@ static inline void wanxl_tx_intr(port_t *port)
                        return;
 
                case PACKET_UNDERRUN:
-                       stats->tx_errors++;
-                       stats->tx_fifo_errors++;
+                       dev->stats.tx_errors++;
+                       dev->stats.tx_fifo_errors++;
                        break;
 
                default:
-                       stats->tx_packets++;
-                       stats->tx_bytes += skb->len;
+                       dev->stats.tx_packets++;
+                       dev->stats.tx_bytes += skb->len;
                }
                 desc->stat = PACKET_EMPTY; /* Free descriptor */
                pci_unmap_single(port->card->pdev, desc->address, skb->len,
@@ -202,10 +204,9 @@ static inline void wanxl_rx_intr(card_t *card)
                        port_t *port = &card->ports[desc->stat &
                                                    PACKET_PORT_MASK];
                        struct net_device *dev = port->dev;
-                       struct net_device_stats *stats = hdlc_stats(dev);
 
                        if (!skb)
-                               stats->rx_dropped++;
+                               dev->stats.rx_dropped++;
                        else {
                                pci_unmap_single(card->pdev, desc->address,
                                                 BUFFER_LENGTH,
@@ -217,8 +218,8 @@ static inline void wanxl_rx_intr(card_t *card)
                                       skb->len);
                                debug_frame(skb);
 #endif
-                               stats->rx_packets++;
-                               stats->rx_bytes += skb->len;
+                               dev->stats.rx_packets++;
+                               dev->stats.rx_bytes += skb->len;
                                dev->last_rx = jiffies;
                                skb->protocol = hdlc_type_trans(skb, dev);
                                netif_rx(skb);
@@ -241,7 +242,7 @@ static inline void wanxl_rx_intr(card_t *card)
 
 
 
-static irqreturn_t wanxl_intr(int irq, void* dev_id, struct pt_regs *regs)
+static irqreturn_t wanxl_intr(int irq, void* dev_id)
 {
         card_t *card = dev_id;
         int i;
@@ -465,13 +466,13 @@ static int wanxl_close(struct net_device *dev)
 
 static struct net_device_stats *wanxl_get_stats(struct net_device *dev)
 {
-       struct net_device_stats *stats = hdlc_stats(dev);
        port_t *port = dev_to_port(dev);
 
-       stats->rx_over_errors = get_status(port)->rx_overruns;
-       stats->rx_frame_errors = get_status(port)->rx_frame_errors;
-       stats->rx_errors = stats->rx_over_errors + stats->rx_frame_errors;
-        return stats;
+       dev->stats.rx_over_errors = get_status(port)->rx_overruns;
+       dev->stats.rx_frame_errors = get_status(port)->rx_frame_errors;
+       dev->stats.rx_errors = dev->stats.rx_over_errors +
+               dev->stats.rx_frame_errors;
+       return &dev->stats;
 }
 
 
@@ -596,7 +597,7 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
        }
 
        alloc_size = sizeof(card_t) + ports * sizeof(port_t);
-       card = kmalloc(alloc_size, GFP_KERNEL);
+       card = kzalloc(alloc_size, GFP_KERNEL);
        if (card == NULL) {
                printk(KERN_ERR "wanXL %s: unable to allocate memory\n",
                       pci_name(pdev));
@@ -604,7 +605,6 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
                pci_disable_device(pdev);
                return -ENOBUFS;
        }
-       memset(card, 0, alloc_size);
 
        pci_set_drvdata(pdev, card);
        card->pdev = pdev;
@@ -713,7 +713,7 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
        }
 
        for (i = 0; i < sizeof(firmware); i += 4)
-               writel(htonl(*(u32*)(firmware + i)), mem + PDM_OFFSET + i);
+               writel(ntohl(*(__be32*)(firmware + i)), mem + PDM_OFFSET + i);
 
        for (i = 0; i < ports; i++)
                writel(card->status_address +
@@ -741,7 +741,7 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
        }while (time_after(timeout, jiffies));
 
        if (!stat) {
-               printk(KERN_WARNING "wanXL %s: timeout while initializing card"
+               printk(KERN_WARNING "wanXL %s: timeout while initializing card "
                       "firmware\n", pci_name(pdev));
                wanxl_pci_remove_one(pdev);
                return -ENODEV;
@@ -755,7 +755,7 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
               pci_name(pdev), plx_phy, ramsize / 1024, mem_phy, pdev->irq);
 
        /* Allocate IRQ */
-       if (request_irq(pdev->irq, wanxl_intr, SA_SHIRQ, "wanXL", card)) {
+       if (request_irq(pdev->irq, wanxl_intr, IRQF_SHARED, "wanXL", card)) {
                printk(KERN_WARNING "wanXL %s: could not allocate IRQ%i.\n",
                       pci_name(pdev), pdev->irq);
                wanxl_pci_remove_one(pdev);
@@ -777,7 +777,6 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
                port->dev = dev;
                hdlc = dev_to_hdlc(dev);
                spin_lock_init(&port->lock);
-               SET_MODULE_OWNER(dev);
                dev->tx_queue_len = 50;
                dev->do_ioctl = wanxl_ioctl;
                dev->open = wanxl_open;
@@ -834,7 +833,7 @@ static int __init wanxl_init_module(void)
 #ifdef MODULE
        printk(KERN_INFO "%s\n", version);
 #endif
-       return pci_module_init(&wanxl_pci_driver);
+       return pci_register_driver(&wanxl_pci_driver);
 }
 
 static void __exit wanxl_cleanup_module(void)