On Wednesday 08 February 2006 21:05, Joseph Jezak wrote:
> Michael Buesch wrote:
> > On Wednesday 08 February 2006 18:20, you wrote:
> > 
> >>Michael Buesch wrote:
> >>
> >>>
> >>>Ok, I think your fix is more or less correct.
> >>>The original driver does not have any timeout in mac suspend. It just spins
> >>>until the device responds with IRQ_READY. At least, that's what I can see 
> >>>from
> >>>the specs.
> >>>Im my opinion it is very rude to work without a timeout, here.
> >>>I think we should raise it to some very big value. Maybe half a second, or 
> >>>even
> >>>a whole second.
> >>>I will apply a mac_suspend fix to my tree.
> >>
> >>I think I have figured out what happens in my "Failed to suspend mac/XMIT 
> >>ERROR" sequence. When I
> >>increased the loop count from 1000 to 10000 where the code spins waiting 
> >>for IRQ_READY to be set, I
> > 
> > 
> > I just increased the timeout to 100000 loops in my tree. That should be 
> > enough.
> 
> The original driver looped 3500 times here, is that enough Larry?  I've 
> changed the specs to reflect this.
> 
> >>still got "failure to suspend mac" messages, but the XMIT ERROR message was 
> >>no longer printed. This
> >>made me suspect that the periodic_work1 operation was triggered at a point 
> >>between 
> >>dmacontroller_poke_tx and the end of the operation in 
> >>bcm43xx_dma_handle_xmitstatus, while the 
> >>firmware was doing the transmission.
> >>
> >>To test this, I added a flag that is set in bcm43xx_dma_tx and cleared in
> >>bcm43xx_dma_handle_xmitstatus when 'is_last_fragment' is true. In all of 
> >>the periodic work handlers,
> >>the new flag is tested. If set, the work of the handler is skipped and the 
> >>periodic work is
> >>rescheduled. In periodic_work1_handler where my problem occurred, a message 
> >>is temporarily logged 
> >>when this happens. In roughly 10 hours of testing, I have received a number 
> >>of these messages.
> > 
> > 
> > Very interresting.
> > Johannes, what is your opinion on that. Does the original driver also
> > implement a mutex here?
> 
> As far as I know, no, but I'll take a look at the newer driver, perhaps 
> one was added later.

Well, I think it is unlikely that this is the source of the problem,
anyway. I think that something in the bcm43xx_calc_nrssi_slope
is still broken. There are other problems with this function. It is
called from the interference mitigation code and it also breaks for me,
when called from there.

-- 
Greetings Michael.

Attachment: pgpIMa4Na2x4z.pgp
Description: PGP signature

Reply via email to