Commit d66f55e6 authored by Andrew Morton's avatar Andrew Morton Committed by Jeff Garzik

[PATCH] fealnx-mac-address-and-other-issues.patch

(resend - I need to get this out of my tree my one means or another..)


From: "SuD (Alex)" <sud@latinsud.com>

I recently was given a surecom 10/100 ethernet card and found that i could
not change Mac address for it as other driver/devices allow.  I tried to
implement the missing feature and noticed that the device is quite peculiar
(or either my system is broken), when trying to fill mac address registers
(no matter whether io_ops is set): - If I write a byte (writeb) to an even
i/o address it seems like actually a word was written (the next byte is set
to 0).  - If I write a byte to an odd i/o address my pc gets bad freezed.

That made think of writing 16bit words (writew) for the memory address, as
opposed to what most driver examples do.  It works for me (I hope i set the
lines at the right place in device_open function after the device is
reset).  I hope the code is clean enough and does not mess with byte
ordering.  This is the patch (this time against 2.6.5):

(akpm: Is this right on big-endian?)
parent 981a1ad3
......@@ -858,12 +858,17 @@ static int netdev_open(struct net_device *dev)
{
struct netdev_private *np = dev->priv;
long ioaddr = dev->base_addr;
int i;
writel(0x00000001, ioaddr + BCR); /* Reset */
if (request_irq(dev->irq, &intr_handler, SA_SHIRQ, dev->name, dev))
return -EAGAIN;
for (i = 0; i < 3; i++)
writew(((unsigned short*)dev->dev_addr)[i],
ioaddr + PAR0 + i*2);
init_ring(dev);
writel(np->rx_ring_dma, ioaddr + RXLBA);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment