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.

Jan


-------------------------------------------------------
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

Reply via email to