Skip to contentSkip to conversation

ax88796 driver

DISCUSSION Alexander Varnin 3 participants 3 messages Apr 16, 2014 – Apr 23, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hello!

I am currently working on kernel and dealing with ax88796 driver, that has been written by Ben Dooks <[email protected]>. Since his address is not available anymore (says "Ben doesn't work here any more"), I want to ask help from somebody, who maybe somehow related to this driver.

I want to ask on source code, because there is some non-obvious lines.

Take a look on ax_initial_check function from ax88796.c please [1].

Here is lines 127-129 of it:

ei_outb (E8390_NODMA + E8390_PAGE1 + E8390_STOP, ioaddr + E8390_CMD); regd = ei_inb (ioaddr + 0x0d);
ei_outb (0xff, ioaddr + 0x0d);

This is supposed to be read and write to 0xD register on PAGE 1 of AX88796. But that offset stands for "Multicast Address Register 5 ( MAR5 )" in AX88796 datasheet [2].

What is the point of doing so? That looks very like a mistake. If it is a mistake, I could make and send patch to fix it. But, please, explain why is it done?

[1] http://lxr.free-electrons.com/source/drivers/net/ethernet/8390/ax88796.c#L116
[2] http://www.digchip.com/datasheets/parts/datasheet/562/AX88796-pdf.php

--

Alexander.

#1 lore raw
Quoted 6 lines · Alexander Varnin

Hello!

I am currently working on kernel and dealing with ax88796 driver, that has been written by Ben Dooks <[email protected]>. Since his address is not available anymore (says "Ben doesn't work here any more"), I want to ask help from somebody, who maybe somehow related to this driver.

I'm cc'ing Ben, but I doubt he'll want to remember this driver.

Ben.

Quoted 21 lines

I want to ask on source code, because there is some non-obvious lines.

Take a look on ax_initial_check function from ax88796.c please [1].

Here is lines 127-129 of it:

ei_outb (E8390_NODMA + E8390_PAGE1 + E8390_STOP, ioaddr + E8390_CMD); regd = ei_inb (ioaddr + 0x0d);
ei_outb (0xff, ioaddr + 0x0d);

This is supposed to be read and write to 0xD register on PAGE 1 of AX88796. But that offset stands for "Multicast Address Register 5 ( MAR5 )" in AX88796 datasheet [2].

What is the point of doing so? That looks very like a mistake. If it is a mistake, I could make and send patch to fix it. But, please, explain why is it done?

[1] http://lxr.free-electrons.com/source/drivers/net/ethernet/8390/ax88796.c#L116
[2] http://www.digchip.com/datasheets/parts/datasheet/562/AX88796-pdf.php

Signature · 2 lines
Ben Hutchings
Beware of programmers who carry screwdrivers. - Leonard Brandwein
#2 lore raw
Quoted 11 lines · Ben Hutchings
Quoted 6 lines · Alexander Varnin

Hello!

I am currently working on kernel and dealing with ax88796 driver, that has been written by Ben Dooks <[email protected]>. Since his address is not available anymore (says "Ben doesn't work here any more"), I want to ask help from somebody, who maybe somehow related to this driver.

I'm cc'ing Ben, but I doubt he'll want to remember this driver.

Ben.

Hi, I really do not remember this driver as we only used this device on a couple of projects before changing to another supplier.

Quoted 14 lines
Quoted 14 lines

I want to ask on source code, because there is some non-obvious lines.

Take a look on ax_initial_check function from ax88796.c please [1].

Here is lines 127-129 of it:

ei_outb (E8390_NODMA + E8390_PAGE1 + E8390_STOP, ioaddr + E8390_CMD); regd = ei_inb (ioaddr + 0x0d);
ei_outb (0xff, ioaddr + 0x0d);

This is supposed to be read and write to 0xD register on PAGE 1 of AX88796. But that offset stands for "Multicast Address Register 5 ( MAR5 )" in AX88796 datasheet [2].

Quoted 7 lines
Quoted 7 lines

What is the point of doing so? That looks very like a mistake. If it is a mistake, I could make and send patch to fix it. But, please, explain why is it done?

[1] http://lxr.free-electrons.com/source/drivers/net/ethernet/8390/ax88796.c#L116
[2] http://www.digchip.com/datasheets/parts/datasheet/562/AX88796-pdf.php

Hmm, is there an actual bug here or is this something that we think is wrong? I could have a look but I do not have any bootable test hardware available.

Signature · 2 lines
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius