On 06/29/2005 11:45 PM Jan Kiszka wrote: > Wolfgang Grandegger wrote: >> ... >> I was rigt, The problem is with "frags" in rt_3c59.c": > > Oh, yes, our old friend again. :) > >> >> for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { >> skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; >> >> vp->tx_ring[entry].frag[i+1].addr = >> // *** RTnet: page mapping correct? Or is this code never used? >> cpu_to_le32(pci_map_single(vp->pdev, >> >> (void*)page_address(frag->page) + >> frag->page_offset, >> frag->size, PCI_DMA_TODEVICE)); >> >> What memory is actually used for the RTnet skb's? >> > > The usage of skb_shinfo is illegal with real-time skbs (rtskbs). It > assumes that there is some skb_shared_info struct at the end of the > payload buffer. But rtskbs are not shared as normal skbs between several > users. Thus, the assumption for RTnet should be that always only a > single fragment exists and that the rtskb at hand already describes it. > But I don't know yet how to apply this to the 3c59x code.
OK, I realized as well, that I stumbeled over untested code. For some reason the kernel of FC 2 uses "zero-copy". I disabled DD_ZEROCOPY and now it works. Is the rtskb memory contiguous? How is it allocated? Actually what the DMA engine of the 3c59 needs is a chain of memory chunk address and size. I will look into this later on. Thank. Wolfgang. ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ RTnet-users mailing list RTnet-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rtnet-users