[PATCH] zd1211rw: Added new USB id for Planex GW-US54ZGL
[powerpc.git] / drivers / net / sunqe.c
index 817a40b..fa70e0b 100644 (file)
@@ -437,7 +437,6 @@ static void qe_rx(struct sunqe *qep)
                                drops++;
                                qep->net_stats.rx_dropped++;
                        } else {
-                               skb->dev = qep->dev;
                                skb_reserve(skb, 2);
                                skb_put(skb, len);
                                eth_copy_and_sum(skb, (unsigned char *) this_qbuf,
@@ -451,7 +450,7 @@ static void qe_rx(struct sunqe *qep)
                }
                end_rxd->rx_addr = this_qbuf_dvma;
                end_rxd->rx_flags = (RXD_OWN | ((RXD_PKT_SZ) & RXD_LENGTH));
-               
+
                elem = NEXT_RX(elem);
                this = &rxbase[elem];
        }
@@ -466,9 +465,9 @@ static void qe_tx_reclaim(struct sunqe *qep);
  * so we just run through each qe and check to see who is signaling
  * and thus needs to be serviced.
  */
-static irqreturn_t qec_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t qec_interrupt(int irq, void *dev_id)
 {
-       struct sunqec *qecp = (struct sunqec *) dev_id;
+       struct sunqec *qecp = dev_id;
        u32 qec_status;
        int channel = 0;
 
@@ -593,7 +592,7 @@ static int qe_start_xmit(struct sk_buff *skb, struct net_device *dev)
        /* Avoid a race... */
        qep->qe_block->qe_txd[entry].tx_flags = TXD_UPDATE;
 
-       memcpy(txbuf, skb->data, len);
+       skb_copy_from_linear_data(skb, txbuf, len);
 
        qep->qe_block->qe_txd[entry].tx_addr = txbuf_dvma;
        qep->qe_block->qe_txd[entry].tx_flags =
@@ -718,7 +717,7 @@ static u32 qe_get_link(struct net_device *dev)
        return (phyconfig & MREGS_PHYCONFIG_LSTAT);
 }
 
-static struct ethtool_ops qe_ethtool_ops = {
+static const struct ethtool_ops qe_ethtool_ops = {
        .get_drvinfo            = qe_get_drvinfo,
        .get_link               = qe_get_link,
 };
@@ -845,6 +844,8 @@ static int __init qec_ether_init(struct sbus_dev *sdev)
        if (!dev)
                return -ENOMEM;
 
+       memcpy(dev->dev_addr, idprom->id_ethaddr, 6);
+
        qe = netdev_priv(dev);
 
        i = of_getintprop_default(sdev->ofdev.node, "channel#", -1);
@@ -858,7 +859,7 @@ static int __init qec_ether_init(struct sbus_dev *sdev)
        }
        qe->channel = i;
        spin_lock_init(&qe->lock);
-       
+
        res = -ENODEV;
        qecp = get_qec(sdev);
        if (!qecp)
@@ -960,7 +961,7 @@ static int __devexit qec_sbus_remove(struct of_device *dev)
        struct sunqe *qp = dev_get_drvdata(&dev->dev);
        struct net_device *net_dev = qp->dev;
 
-       unregister_netdevice(net_dev);
+       unregister_netdev(net_dev);
 
        sbus_iounmap(qp->qcregs, CREG_REG_SIZE);
        sbus_iounmap(qp->mregs, MREGS_REG_SIZE);