Marvell MV6436xx ethernet driver patch

Nicolas DET nd at
Tue Sep 13 20:35:31 EST 2005

Hello !

I was wondering what is the status of the mv eth driver?

> The main changes (AFAIR):
> * Workaround for the TCP/UDP hw checksum
Should be included in my opinion. It gives a serious boost on TX.

> * Use hardware for statistics
Dunno if it should be commited. I don't think you would gain more than 0.1%

> * Define and use SRAM (for pegasos II archp/ppc/chrp_pegasos_eth.c)
Should be include IMO. It only applies for the Pegasos II

> * Able to use max burst size from/to DDR (serious transfer boost)
see notes below.

> * Option can be selected through the menu (drivers/net/Kconfig)
Should be removed/ignored as discussed previously

> * ...

> some testing...

> By the way, I noticed that page_address() sometimes returns NULL when
> using highmem (with a lot of mem).

Implementating MAXBURST...
Using kmap/kunmap instead of page_address (which is the right way do to, as
far as I understood), is a bit more complex.
Indeed, kunmap() can't be called from an interrupt.
However, this would have been very simple to kunmap() the page from there.

It would be possible to put every pages to kunmap into
a list (list_add() would be inside the interrupt) and to kunmap() the whole
list at another moment.

This would probably mean to extend pkt_info/eth_tx_desc.
also, I wonder what would happen if a page is:

- kmap() into xmit
- then put in the list into the interuupt
- kmap again into xmit
- and kunmap() afterwards...

Is there any other way to get the bus address of a page ?
The first thing, if we want to keep 'max burst size' should be to disable
if high mem is enable. At least, it would be stable.

Nicolas DET
MorphOS & Linux developer

More information about the Linuxppc-dev mailing list