]> err.no Git - linux-2.6/blobdiff - drivers/net/tokenring/olympic.c
dev->priv to netdev_priv(dev), drivers/net/tokenring/
[linux-2.6] / drivers / net / tokenring / olympic.c
index 85831484bc40ce9914572d7d3525a103e2bb137b..b57f65b2591a22fc4efb617a5100af9ae3f2220a 100644 (file)
 #include <linux/jiffies.h>
 
 #include <net/checksum.h>
+#include <net/net_namespace.h>
 
 #include <asm/io.h>
 #include <asm/system.h>
@@ -185,7 +186,7 @@ static int olympic_xmit(struct sk_buff *skb, struct net_device *dev);
 static int olympic_close(struct net_device *dev);
 static void olympic_set_rx_mode(struct net_device *dev);
 static void olympic_freemem(struct net_device *dev) ;  
-static irqreturn_t olympic_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t olympic_interrupt(int irq, void *dev_id);
 static struct net_device_stats * olympic_get_stats(struct net_device *dev);
 static int olympic_set_mac_address(struct net_device *dev, void *addr) ; 
 static void olympic_arb_cmd(struct net_device *dev);
@@ -219,14 +220,14 @@ static int __devinit olympic_probe(struct pci_dev *pdev, const struct pci_device
                goto op_release_dev;
        }
 
-       olympic_priv = dev->priv ;
+       olympic_priv = netdev_priv(dev) ;
        
        spin_lock_init(&olympic_priv->olympic_lock) ; 
 
        init_waitqueue_head(&olympic_priv->srb_wait);
        init_waitqueue_head(&olympic_priv->trb_wait);
 #if OLYMPIC_DEBUG  
-       printk(KERN_INFO "pci_device: %p, dev:%p, dev->priv: %p\n", pdev, dev, dev->priv);
+       printk(KERN_INFO "pci_device: %p, dev:%p, dev->priv: %p\n", pdev, dev, netdev_priv(dev));
 #endif
        dev->irq=pdev->irq;
        dev->base_addr=pci_resource_start(pdev, 0);
@@ -268,9 +269,9 @@ static int __devinit olympic_probe(struct pci_dev *pdev, const struct pci_device
        printk("Olympic: %s registered as: %s\n",olympic_priv->olympic_card_name,dev->name);
        if (olympic_priv->olympic_network_monitor) { /* Must go after register_netdev as we need the device name */ 
                char proc_name[20] ; 
-               strcpy(proc_name,"net/olympic_") ; 
+               strcpy(proc_name,"olympic_") ;
                strcat(proc_name,dev->name) ; 
-               create_proc_read_entry(proc_name,0,NULL,olympic_proc_info,(void *)dev) ; 
+               create_proc_read_entry(proc_name,0,init_net.proc_net,olympic_proc_info,(void *)dev) ;
                printk("Olympic: Network Monitor information: /proc/%s\n",proc_name); 
        }
        return  0 ;
@@ -297,7 +298,7 @@ static int __devinit olympic_init(struct net_device *dev)
        unsigned long t; 
        unsigned int uaa_addr;
 
-       olympic_priv=(struct olympic_private *)dev->priv;
+       olympic_priv=netdev_priv(dev);
        olympic_mmio=olympic_priv->olympic_mmio;
 
        printk("%s \n", version);
@@ -435,7 +436,7 @@ static int __devinit olympic_init(struct net_device *dev)
 
 static int olympic_open(struct net_device *dev) 
 {
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio,*init_srb;
        unsigned long flags, t;
        int i, open_finished = 1 ;
@@ -755,7 +756,7 @@ out:
  */
 static void olympic_rx(struct net_device *dev)
 {
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio;
        struct olympic_rx_status *rx_status;
        struct olympic_rx_desc *rx_desc ; 
@@ -814,8 +815,6 @@ static void olympic_rx(struct net_device *dev)
                                        olympic_priv->rx_ring_last_received += i ; 
                                        olympic_priv->rx_ring_last_received &= (OLYMPIC_RX_RING_SIZE -1) ;  
                                } else  {
-                                       skb->dev = dev ; 
-
                                        /* Optimise based upon number of buffers used. 
                                           If only one buffer is used we can simply swap the buffers around.
                                           If more than one then we must use the new buffer and copy the information
@@ -847,7 +846,9 @@ static void olympic_rx(struct net_device *dev)
                                                        pci_dma_sync_single_for_cpu(olympic_priv->pdev,
                                                                le32_to_cpu(olympic_priv->olympic_rx_ring[rx_ring_last_received].buffer),
                                                                olympic_priv->pkt_buf_sz,PCI_DMA_FROMDEVICE) ; 
-                                                       memcpy(skb_put(skb,length-4),olympic_priv->rx_ring_skb[rx_ring_last_received]->data,length-4) ; 
+                                                       skb_copy_from_linear_data(olympic_priv->rx_ring_skb[rx_ring_last_received],
+                                                                     skb_put(skb,length - 4),
+                                                                     length - 4);
                                                        pci_dma_sync_single_for_device(olympic_priv->pdev,
                                                                le32_to_cpu(olympic_priv->olympic_rx_ring[rx_ring_last_received].buffer),
                                                                olympic_priv->pkt_buf_sz,PCI_DMA_FROMDEVICE) ;
@@ -864,7 +865,9 @@ static void olympic_rx(struct net_device *dev)
                                                                olympic_priv->pkt_buf_sz,PCI_DMA_FROMDEVICE) ; 
                                                        rx_desc = &(olympic_priv->olympic_rx_ring[rx_ring_last_received]);
                                                        cpy_length = (i == 1 ? frag_len : le32_to_cpu(rx_desc->res_length)); 
-                                                       memcpy(skb_put(skb, cpy_length), olympic_priv->rx_ring_skb[rx_ring_last_received]->data, cpy_length) ;
+                                                       skb_copy_from_linear_data(olympic_priv->rx_ring_skb[rx_ring_last_received],
+                                                                     skb_put(skb, cpy_length),
+                                                                     cpy_length);
                                                        pci_dma_sync_single_for_device(olympic_priv->pdev,
                                                                le32_to_cpu(olympic_priv->olympic_rx_ring[rx_ring_last_received].buffer),
                                                                olympic_priv->pkt_buf_sz,PCI_DMA_FROMDEVICE) ;
@@ -895,7 +898,7 @@ static void olympic_rx(struct net_device *dev)
 
 static void olympic_freemem(struct net_device *dev) 
 { 
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        int i;
                        
        for(i=0;i<OLYMPIC_RX_RING_SIZE;i++) {
@@ -925,10 +928,10 @@ static void olympic_freemem(struct net_device *dev)
        return ; 
 }
  
-static irqreturn_t olympic_interrupt(int irq, void *dev_id, struct pt_regs *regs
+static irqreturn_t olympic_interrupt(int irq, void *dev_id) 
 {
        struct net_device *dev= (struct net_device *)dev_id;
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio;
        u32 sisr;
        u8 __iomem *adapter_check_area ; 
@@ -1044,7 +1047,7 @@ static irqreturn_t olympic_interrupt(int irq, void *dev_id, struct pt_regs *regs
 
 static int olympic_xmit(struct sk_buff *skb, struct net_device *dev) 
 {
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio;
        unsigned long flags ; 
 
@@ -1075,7 +1078,7 @@ static int olympic_xmit(struct sk_buff *skb, struct net_device *dev)
 
 static int olympic_close(struct net_device *dev) 
 {
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio,*srb;
        unsigned long t,flags;
 
@@ -1145,7 +1148,7 @@ static int olympic_close(struct net_device *dev)
 
 static void olympic_set_rx_mode(struct net_device *dev) 
 {
-       struct olympic_private *olympic_priv = (struct olympic_private *) dev->priv ; 
+       struct olympic_private *olympic_priv = netdev_priv(dev);
        u8 __iomem *olympic_mmio = olympic_priv->olympic_mmio ; 
        u8 options = 0; 
        u8 __iomem *srb;
@@ -1213,7 +1216,7 @@ static void olympic_set_rx_mode(struct net_device *dev)
 
 static void olympic_srb_bh(struct net_device *dev) 
 { 
-       struct olympic_private *olympic_priv = (struct olympic_private *) dev->priv ; 
+       struct olympic_private *olympic_priv = netdev_priv(dev);
        u8 __iomem *olympic_mmio = olympic_priv->olympic_mmio ; 
        u8 __iomem *srb;
 
@@ -1359,14 +1362,14 @@ static void olympic_srb_bh(struct net_device *dev)
 static struct net_device_stats * olympic_get_stats(struct net_device *dev)
 {
        struct olympic_private *olympic_priv ;
-       olympic_priv=(struct olympic_private *) dev->priv;
+       olympic_priv=netdev_priv(dev);
        return (struct net_device_stats *) &olympic_priv->olympic_stats; 
 }
 
 static int olympic_set_mac_address (struct net_device *dev, void *addr) 
 {
        struct sockaddr *saddr = addr ; 
-       struct olympic_private *olympic_priv = (struct olympic_private *)dev->priv ; 
+       struct olympic_private *olympic_priv = netdev_priv(dev);
 
        if (netif_running(dev)) { 
                printk(KERN_WARNING "%s: Cannot set mac/laa address while card is open\n", dev->name) ; 
@@ -1387,7 +1390,7 @@ static int olympic_set_mac_address (struct net_device *dev, void *addr)
 
 static void olympic_arb_cmd(struct net_device *dev)
 {
-       struct olympic_private *olympic_priv = (struct olympic_private *) dev->priv;
+       struct olympic_private *olympic_priv = netdev_priv(dev);
        u8 __iomem *olympic_mmio=olympic_priv->olympic_mmio;
        u8 __iomem *arb_block, *asb_block, *srb  ; 
        u8 header_len ; 
@@ -1440,16 +1443,16 @@ static void olympic_arb_cmd(struct net_device *dev)
                        next_ptr=readw(buf_ptr+offsetof(struct mac_receive_buffer,next)); 
                } while (next_ptr && (buf_ptr=olympic_priv->olympic_lap + ntohs(next_ptr)));
 
+               mac_frame->protocol = tr_type_trans(mac_frame, dev);
+
                if (olympic_priv->olympic_network_monitor) { 
                        struct trh_hdr *mac_hdr ; 
                        printk(KERN_WARNING "%s: Received MAC Frame, details: \n",dev->name) ;
-                       mac_hdr = (struct trh_hdr *)mac_frame->data ; 
+                       mac_hdr = tr_hdr(mac_frame);
                        printk(KERN_WARNING "%s: MAC Frame Dest. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", dev->name , mac_hdr->daddr[0], mac_hdr->daddr[1], mac_hdr->daddr[2], mac_hdr->daddr[3], mac_hdr->daddr[4], mac_hdr->daddr[5]) ; 
                        printk(KERN_WARNING "%s: MAC Frame Srce. Addr: %02x:%02x:%02x:%02x:%02x:%02x \n", dev->name , mac_hdr->saddr[0], mac_hdr->saddr[1], mac_hdr->saddr[2], mac_hdr->saddr[3], mac_hdr->saddr[4], mac_hdr->saddr[5]) ; 
                }
-               mac_frame->dev = dev ; 
-               mac_frame->protocol = tr_type_trans(mac_frame,dev);
-               netif_rx(mac_frame) ;   
+               netif_rx(mac_frame);
                dev->last_rx = jiffies;
 
 drop_frame:
@@ -1573,7 +1576,7 @@ drop_frame:
 
 static void olympic_asb_bh(struct net_device *dev) 
 {
-       struct olympic_private *olympic_priv = (struct olympic_private *) dev->priv ; 
+       struct olympic_private *olympic_priv = netdev_priv(dev);
        u8 __iomem *arb_block, *asb_block ; 
 
        arb_block = (olympic_priv->olympic_lap + olympic_priv->arb) ; 
@@ -1613,7 +1616,7 @@ static void olympic_asb_bh(struct net_device *dev)
  
 static int olympic_change_mtu(struct net_device *dev, int mtu) 
 {
-       struct olympic_private *olympic_priv = (struct olympic_private *) dev->priv;
+       struct olympic_private *olympic_priv = netdev_priv(dev);
        u16 max_mtu ; 
 
        if (olympic_priv->olympic_ring_speed == 4)
@@ -1635,7 +1638,7 @@ static int olympic_change_mtu(struct net_device *dev, int mtu)
 static int olympic_proc_info(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
 {
        struct net_device *dev = (struct net_device *)data ; 
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
        u8 __iomem *oat = (olympic_priv->olympic_lap + olympic_priv->olympic_addr_table_addr) ; 
        u8 __iomem *opt = (olympic_priv->olympic_lap + olympic_priv->olympic_parms_addr) ; 
        int size = 0 ; 
@@ -1746,13 +1749,13 @@ static int olympic_proc_info(char *buffer, char **start, off_t offset, int lengt
 static void __devexit olympic_remove_one(struct pci_dev *pdev) 
 {
        struct net_device *dev = pci_get_drvdata(pdev) ; 
-       struct olympic_private *olympic_priv=(struct olympic_private *)dev->priv;
+       struct olympic_private *olympic_priv=netdev_priv(dev);
 
        if (olympic_priv->olympic_network_monitor) { 
                char proc_name[20] ; 
-               strcpy(proc_name,"net/olympic_") ; 
+               strcpy(proc_name,"olympic_") ;
                strcat(proc_name,dev->name) ;
-               remove_proc_entry(proc_name,NULL); 
+               remove_proc_entry(proc_name,init_net.proc_net);
        }
        unregister_netdev(dev) ; 
        iounmap(olympic_priv->olympic_mmio) ; 
@@ -1771,7 +1774,7 @@ static struct pci_driver olympic_driver = {
 
 static int __init olympic_pci_init(void) 
 {
-       return pci_module_init (&olympic_driver) ; 
+       return pci_register_driver(&olympic_driver) ;
 }
 
 static void __exit olympic_pci_cleanup(void)