Marvell MV6436xx ethernet driver patch

6 messages, 4 authors, 2005-09-13 · open the first message on its own page

Marvell MV6436xx ethernet driver patch

From: Nicolas DET <hidden>
Date: 2005-08-30 18:30:19

Hello,

You can find enclosed a patch for the Marvell MV643xx ethernet driver.

It's also there:
http://arrakin.homedns.org/~nicolas/mv643xx_eth.tar.gz (tarball)
http://arrakin.homedns.org/~nicolas/mv643xx_eth.diff.bz2 

The diff is against the kernel 2.6.13 (kernel.org).

The main changes (AFAIR):
* Workaround for the TCP/UDP hw checksum
* Use hardware for statistics
* Define and use SRAM (for pegasos II archp/ppc/chrp_pegasos_eth.c)
* Able to use max burst size from/to DDR (serious transfer boost)
* Option can be selected through the menu (drivers/net/Kconfig)
* ...

some testing...

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

You are welcome to review this patch. Some parts (especially the TX bug
workaroud) will be appreciated IMO.

Regards,
-- 
Nicolas DET
MorphOS & Linux developer

Re: Marvell MV6436xx ethernet driver patch

From: Christoph Hellwig <hch@lst.de>
Date: 2005-08-30 19:09:54

On Tue, Aug 30, 2005 at 08:07:33PM +0100, Nicolas DET wrote:
By the way, I noticed that page_address() sometimes returns NULL when using
highmem (with a lot of mem).
You can only use page_address() on kernel-mapped memory.  For
non-GFP_KERNEL allocation you need to use kmap/kmap_atomic to map it
into kernel-virtual memory space.

Re: Marvell MV6436xx ethernet driver patch

From: Andrew Morton <hidden>
Date: 2005-08-31 01:01:30

Nicolas DET [off-list ref] wrote:
You can find enclosed a patch for the Marvell MV643xx ethernet driver.

 It's also there:
 http://arrakin.homedns.org/~nicolas/mv643xx_eth.tar.gz (tarball)
 http://arrakin.homedns.org/~nicolas/mv643xx_eth.diff.bz2 

 The diff is against the kernel 2.6.13 (kernel.org).

 The main changes (AFAIR):
 * Workaround for the TCP/UDP hw checksum
 * Use hardware for statistics
 * Define and use SRAM (for pegasos II archp/ppc/chrp_pegasos_eth.c)
 * Able to use max burst size from/to DDR (serious transfer boost)
 * Option can be selected through the menu (drivers/net/Kconfig)
 * ...

 some testing...

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

 You are welcome to review this patch. Some parts (especially the TX bug
 workaroud) will be appreciated IMO.
- Does strange things to drivers/net/Kconfig, like removing the SKGE entry(?)

- Generates rather a lot of rejects agains post-2.6.13 changes.  You'll
  need to rediff this against current Linus tree or, preferably, against
  the next -mm kernel, please.

- Please cc netdev@vger.kernel.org next time.

Re: Marvell MV6436xx ethernet driver patch

From: Nicolas DET <hidden>
Date: 2005-09-13 09:40:48

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
it
if high mem is enable. At least, it would be stable.

Bye
-- 
Nicolas DET
MorphOS & Linux developer

Re: Marvell MV6436xx ethernet driver patch

From: Christoph Hellwig <hch@lst.de>
Date: 2005-09-13 10:35:54

On Tue, Sep 13, 2005 at 11:35:31AM +0100, Nicolas DET wrote:
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.
kmap_atomic/kunmap_atomic can.

anywya, I think the patch discussion is rather offtopic here.  Network
driver patches are discussed and reviewed at netdev@oss.sgi.com

Re: Marvell MV6436xx ethernet driver patch

From: Dale Farnsworth <hidden>
Date: 2005-09-13 20:02:00

On Tue, Sep 13, 2005 at 10:35:39AM +0000, Christoph Hellwig wrote:
anywya, I think the patch discussion is rather offtopic here.  Network
driver patches are discussed and reviewed at netdev@oss.sgi.com
The current address is netdev@vger.kernel.org

I responded privately to Nicolas' message (before I realized it was posted
here).  Still, I think it worth mentioning that a workaround for the
mv643xx_eth TCP/UDP hw checksum issue is already in 2.6.14-rc1.

-Dale
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help