diff options
author | Felix Fietkau <nbd@openwrt.org> | 2008-12-28 01:21:03 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2008-12-28 01:21:03 +0000 |
commit | 8e5dfe75c30cc278e1afb4b02139bd7b986dac58 (patch) | |
tree | 106fa24098026ffe6a8bc79ea783bff72c180023 /target/linux/atheros | |
parent | d05f731a86f20066ab50c7e972d4db492d2be272 (diff) | |
download | upstream-8e5dfe75c30cc278e1afb4b02139bd7b986dac58.tar.gz upstream-8e5dfe75c30cc278e1afb4b02139bd7b986dac58.tar.bz2 upstream-8e5dfe75c30cc278e1afb4b02139bd7b986dac58.zip |
atheros: instead of resetting the ethernet core on ifup, only upload the new mac address. fixes a tx regression on various devices
SVN-Revision: 13753
Diffstat (limited to 'target/linux/atheros')
-rw-r--r-- | target/linux/atheros/files/drivers/net/ar2313/ar2313.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/target/linux/atheros/files/drivers/net/ar2313/ar2313.c b/target/linux/atheros/files/drivers/net/ar2313/ar2313.c index 995325a913..727d190b37 100644 --- a/target/linux/atheros/files/drivers/net/ar2313/ar2313.c +++ b/target/linux/atheros/files/drivers/net/ar2313/ar2313.c @@ -1120,9 +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 */ - ar2313_reset_reg(dev); + 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); |