This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Re: XXXX_can_send function -- HELP NEEDED


Gary,

Can you tell which function in eCos calls XXXX_can_send? I want to
investigate its behavior, may be from there I can find out what is going
on. thanks.

I have one more question, why eCos calls XXXX_stop and XXXX_start after
initial XXXX_start is called?

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

I use poll_timer to check if transfer is done and it calls eth_drv. It is
OK here. I also modified my XXXX_can_send, if no longer calls __poll.
Pleae note that eCos tries to send to packets in the begining.
>
> 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)

Yes that is the case, if you see here, the driver checks the DMA TX status
and if dma_txBds is not owned by DMA, it increments 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
>> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]