[ECOS] Re: XXXX_can_send function -- HELP NEEDED
Gary Thomas
gary@mlbassoc.com
Thu Aug 11 20:46:00 GMT 2005
On Thu, 2005-08-11 at 13:40 -0700, mkhoyila@uci.edu wrote:
> Hi all and Gary,
>
> I resolved one of my issues that I was seeing unsolicited interrupts. It
> was unrelaed to my ehternet driver.
>
> I still have the issue of XXXX_can_send function being called repeatedly.
> Here is order of events that happen in the begining. I hope by looking at
> these prints out, you might have suggestions where I start looking at.
> Thanks again
> Michael
>
> bcm63xx_start
> bcm63xx_can_send
> bcm63xx_can_send: return 4 txFreeBds
> bcm63xx_can_send
> bcm63xx_can_send: return 4 txFreeBds
> bcm63xx_send: 1 sg's, 42 bytes, KEY 2147982464
>
> This is what it is trying to send out:
> ffffffffffff21012108860180640121012108c0a818000000c0a818
>
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm63xx_control
> [eth_drv_ioctl] Warning: Driver can't set multi-cast mode
> bcm63xx_start
> bcm63xx_stop
> bcm63xx_control
> [eth_drv_ioctl] Warning: Driver can't set multi-cast mode
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm63xx_send: 1 sg's, 42 bytes, KEY 2147982336
>
> This is what it is trying to send out:
> ffffffffffff21012108860180640121012108c0a818000000c0a818
>
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm63xx_stop
> bcm63xx_start
> bcm63xx_control
> [eth_drv_ioctl] Warning: Driver can't set multi-cast mode
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 2 txFreeBds
> bcm63xx_enet_poll_timer
> poll_timer: calling drv_dsr
> bcm63xx_deliver
> __do _deliver
> __rx_poll
> __tx_poll
> __tx_poll: calling tx_done
Why is '__tx_poll' calling 'tx_done' if no packets have ever been sent
out? I noticed that your 'can_send' routine called 'poll' and if this
is the case, you've got a wicked case of infinite recursion.
You should only call 'tx_done' when a packet has been posted to the
hardware and the hardware indicates that it has completed sending it
(or errored out)
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 3 txFreeBds
> bcm63xx_enet_poll_timer
> poll_timer: calling drv_dsr
> bcm63xx_deliver
> __do _deliver
> __rx_poll
> __tx_poll
> __tx_poll: calling tx_done
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm63xx_enet_poll_timer
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
> bcm66xx_can_send
> bcm63xx_can_end: return 4 txFreeBds
>
>
>
>
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list