Somnath kotur wrote:
Hi All,
I'm currently involved in writing driver for my 10G NIC H/W . My hardware seems to be facing a problem whenever i try with LSO enabled ( all it needs is the Tx MSS ) and the packet has more fragments than the no: of TX descriptors that my card can handle (32) at one time . My current strategy in such a scenario is to ddi_dma_mem_alloc a virtual buffer in my driver for the packet size ,do an ddi_dma_addr_bind for this VA and then copy the contents of the packet to this virtual buffer which is now DMA-ready as well before handing it off to the card. Now, for some reason this doesn't seem to work in the case of these large packets that come in LSO path.Now while i am not sure what the H/W problem is, my question really is ..
a) Is this a good/workable strategy?
b) Are there any better alternatives ?

We were facing similar issues with the Infiniband IPoIB driver (ibd.c).
We have a separate buffer management for such scenarios. The allocation is done at attach time, and not dynamically, when the need arises. This way, the performance is not negotiated.

On opensolaris, check out the following:
 usr/src/uts/common/io/ib/clients/ibd/ibd.c
 usr/src/uts/common/sys/ib/clients/ibd/ibd.h

Pavan

I am using Solaris 10x86 Update 6 05/08 Thanks
Som


_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

_______________________________________________
driver-discuss mailing list
driver-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to