> I suspect the driver has some bug in its RX path, and the RTmac layer is
> the first consumer suffering from it, generating an exception.

I've traced back through the RX path, but I don't see anything out of the
ordinary compared to the other RTnet drivers.  Really, I'm a little bit
confused as to how rtcfg_rx_task can work.  In rtcfg_rx_task() the last
parameter to rtcfg_do_main_event() is rtskb*, which it gets from
rtskb_dequeue().  This parameter is implicitly cast to void*.
rtcfg_do_main_event() in turn calls the function pointer from array state[],
which in the initial part of slave mode will call rtcfg_main_state_off().
Here the rtskb* is cast from void* to rt_proc_call*.  All of this wouldn't
be so bad if rt_proc_call and rtskb were compatible structures, but the two
are quite different from the very beginning.

Does rtskb_dequeue() actually return a rt_proc_call*, just improperly cast
as a rtskb*?



> Resolve the address given along with the suspension error, check the
> disassembly or instrument the RTmac code to find out what it tries to
> access (I bet some rtskb field that is corrupted).

Even after the exception in RTcfg, the driver itself continues to produce
(as far as I can tell) valid rtskb instances with incoming traffic.
Although the exception is in RTcfg, is there a part of the code in RTmac
that I should investigate for corruption?


Thanks,

- James
------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
RTnet-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-developers

Reply via email to