Merge branch 'e1000-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[pandora-kernel.git] / drivers / net / tulip / uli526x.c
index 8b3a28f..ca2548e 100644 (file)
@@ -222,9 +222,9 @@ static int uli526x_start_xmit(struct sk_buff *, struct net_device *);
 static int uli526x_stop(struct net_device *);
 static struct net_device_stats * uli526x_get_stats(struct net_device *);
 static void uli526x_set_filter_mode(struct net_device *);
-static struct ethtool_ops netdev_ethtool_ops;
+static const struct ethtool_ops netdev_ethtool_ops;
 static u16 read_srom_word(long, int);
-static irqreturn_t uli526x_interrupt(int, void *, struct pt_regs *);
+static irqreturn_t uli526x_interrupt(int, void *);
 static void uli526x_descriptor_init(struct uli526x_board_info *, unsigned long);
 static void allocate_rx_buffer(struct uli526x_board_info *);
 static void update_cr6(u32, unsigned long);
@@ -436,7 +436,7 @@ static int uli526x_open(struct net_device *dev)
 
        ULI526X_DBUG(0, "uli526x_open", 0);
 
-       ret = request_irq(dev->irq, &uli526x_interrupt, SA_SHIRQ, dev->name, dev);
+       ret = request_irq(dev->irq, &uli526x_interrupt, IRQF_SHARED, dev->name, dev);
        if (ret)
                return ret;
 
@@ -583,7 +583,7 @@ static int uli526x_start_xmit(struct sk_buff *skb, struct net_device *dev)
 
        /* transmit this packet */
        txptr = db->tx_insert_ptr;
-       memcpy(txptr->tx_buf_ptr, skb->data, skb->len);
+       skb_copy_from_linear_data(skb, txptr->tx_buf_ptr, skb->len);
        txptr->tdes1 = cpu_to_le32(0xe1000000 | skb->len);
 
        /* Point to next transmit free descriptor */
@@ -659,7 +659,7 @@ static int uli526x_stop(struct net_device *dev)
  *     receive the packet to upper layer, free the transmitted packet
  */
 
-static irqreturn_t uli526x_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t uli526x_interrupt(int irq, void *dev_id)
 {
        struct net_device *dev = dev_id;
        struct uli526x_board_info *db = netdev_priv(dev);
@@ -828,14 +828,14 @@ static void uli526x_rx_packet(struct net_device *dev, struct uli526x_board_info
                                        ( (skb = dev_alloc_skb(rxlen + 2) )
                                        != NULL) ) {
                                        /* size less than COPY_SIZE, allocate a rxlen SKB */
-                                       skb->dev = dev;
                                        skb_reserve(skb, 2); /* 16byte align */
-                                       memcpy(skb_put(skb, rxlen), rxptr->rx_skb_ptr->tail, rxlen);
+                                       memcpy(skb_put(skb, rxlen),
+                                              skb_tail_pointer(rxptr->rx_skb_ptr),
+                                              rxlen);
                                        uli526x_reuse_skb(db, rxptr->rx_skb_ptr);
-                               } else {
-                                       skb->dev = dev;
+                               } else
                                        skb_put(skb, rxlen);
-                               }
+
                                skb->protocol = eth_type_trans(skb, dev);
                                netif_rx(skb);
                                dev->last_rx = jiffies;
@@ -985,7 +985,7 @@ static void uli526x_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
        wol->wolopts = 0;
 }
 
-static struct ethtool_ops netdev_ethtool_ops = {
+static const struct ethtool_ops netdev_ethtool_ops = {
        .get_drvinfo            = netdev_get_drvinfo,
        .get_settings           = netdev_get_settings,
        .get_link               = netdev_get_link,
@@ -1177,7 +1177,10 @@ static void uli526x_reuse_skb(struct uli526x_board_info *db, struct sk_buff * sk
 
        if (!(rxptr->rdes0 & cpu_to_le32(0x80000000))) {
                rxptr->rx_skb_ptr = skb;
-               rxptr->rdes2 = cpu_to_le32( pci_map_single(db->pdev, skb->tail, RX_ALLOC_SIZE, PCI_DMA_FROMDEVICE) );
+               rxptr->rdes2 = cpu_to_le32(pci_map_single(db->pdev,
+                                                         skb_tail_pointer(skb),
+                                                         RX_ALLOC_SIZE,
+                                                         PCI_DMA_FROMDEVICE));
                wmb();
                rxptr->rdes0 = cpu_to_le32(0x80000000);
                db->rx_avail_cnt++;
@@ -1341,7 +1344,10 @@ static void allocate_rx_buffer(struct uli526x_board_info *db)
                if ( ( skb = dev_alloc_skb(RX_ALLOC_SIZE) ) == NULL )
                        break;
                rxptr->rx_skb_ptr = skb; /* FIXME (?) */
-               rxptr->rdes2 = cpu_to_le32( pci_map_single(db->pdev, skb->tail, RX_ALLOC_SIZE, PCI_DMA_FROMDEVICE) );
+               rxptr->rdes2 = cpu_to_le32(pci_map_single(db->pdev,
+                                                         skb_tail_pointer(skb),
+                                                         RX_ALLOC_SIZE,
+                                                         PCI_DMA_FROMDEVICE));
                wmb();
                rxptr->rdes0 = cpu_to_le32(0x80000000);
                rxptr = rxptr->next_rx_desc;
@@ -1702,7 +1708,6 @@ MODULE_PARM_DESC(mode, "ULi M5261/M5263: Bit 0: 10/100Mbps, bit 2: duplex, bit 8
 
 static int __init uli526x_init_module(void)
 {
-       int rc;
 
        printk(version);
        printed_version = 1;
@@ -1714,22 +1719,19 @@ static int __init uli526x_init_module(void)
        if (cr6set)
                uli526x_cr6_user_set = cr6set;
 
-       switch(mode) {
+       switch (mode) {
        case ULI526X_10MHF:
        case ULI526X_100MHF:
        case ULI526X_10MFD:
        case ULI526X_100MFD:
                uli526x_media_mode = mode;
                break;
-       default:uli526x_media_mode = ULI526X_AUTO;
+       default:
+               uli526x_media_mode = ULI526X_AUTO;
                break;
        }
 
-       rc = pci_module_init(&uli526x_driver);
-       if (rc < 0)
-               return rc;
-
-       return 0;
+       return pci_register_driver(&uli526x_driver);
 }