[ar71xx] generate firmware image for the D-Link DIR-615 C1 board
[openwrt.git] / target / linux / atheros / files / drivers / net / ar2313 / ar2313.c
index 4e3c1d6..727d190 100644 (file)
@@ -219,7 +219,7 @@ int __init ar2313_probe(struct platform_device *pdev)
        dev->do_ioctl = &ar2313_ioctl;
 
        // SAMEER: do we need this?
-       dev->features |= NETIF_F_SG | NETIF_F_HIGHDMA;
+       dev->features |= NETIF_F_HIGHDMA;
 
        tasklet_init(&sp->rx_tasklet, rx_tasklet_func, (unsigned long) dev);
        tasklet_disable(&sp->rx_tasklet);
@@ -826,7 +826,7 @@ static int ar2313_init(struct net_device *dev)
 static void ar2313_load_rx_ring(struct net_device *dev, int nr_bufs)
 {
 
-       struct ar2313_private *sp = ((struct net_device *) dev)->priv;
+       struct ar2313_private *sp = netdev_priv(dev);
        short i, idx;
 
        idx = sp->rx_skbprd;
@@ -1120,6 +1120,21 @@ static irqreturn_t ar2313_interrupt(int irq, void *dev_id)
 static int ar2313_open(struct net_device *dev)
 {
        struct ar2313_private *sp = netdev_priv(dev);
+       unsigned int ethsal, ethsah;
+
+       /* reset the hardware, in case the MAC address changed */
+       ethsah = ((((u_int) (dev->dev_addr[5]) << 8) & (u_int) 0x0000FF00) |
+                         (((u_int) (dev->dev_addr[4]) << 0) & (u_int) 0x000000FF));
+
+       ethsal = ((((u_int) (dev->dev_addr[3]) << 24) & (u_int) 0xFF000000) |
+                         (((u_int) (dev->dev_addr[2]) << 16) & (u_int) 0x00FF0000) |
+                         (((u_int) (dev->dev_addr[1]) << 8) & (u_int) 0x0000FF00) |
+                         (((u_int) (dev->dev_addr[0]) << 0) & (u_int) 0x000000FF));
+
+       sp->eth_regs->mac_addr[0] = ethsah;
+       sp->eth_regs->mac_addr[1] = ethsal;
+
+       mdelay(10);
 
        dev->mtu = 1500;
        netif_start_queue(dev);
This page took 0.021654 seconds and 4 git commands to generate.