All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Williams <dcbw@redhat.com>
To: Sebastian Siewior <ipw+2200@ml.breakpoint.cc>
Cc: "Chatre, Reinette" <reinette.chatre@intel.com>,
	"Zhu, Yi" <yi.zhu@intel.com>,
	James Ketrenos <jketreno@linux.intel.com>,
	linux-wireless@vger.kernel.org,
	ipw2100-devel@lists.sourceforge.net
Subject: Re: ipw2200 stalls on high load
Date: Tue, 05 Feb 2008 10:09:14 -0500	[thread overview]
Message-ID: <1202224154.1243.7.camel@localhost.localdomain> (raw)
In-Reply-To: <20080205083511.GA28623@Chamillionaire.breakpoint.cc>

On Tue, 2008-02-05 at 09:35 +0100, Sebastian Siewior wrote:
> * Dan Williams | 2008-02-04 18:24:10 [-0500]:
> 
> >Could you put some debugging information into ipw_rx() to print out the
> >values of r and i right before the while (i != r) loop, and inside the
> >if (fill_rx) block later down what count and i are?
> Sure:
> 
> [ 1849.374846] Before while 0x0000001c != 0x0000001d
> [ 1849.378151] Before while 0x0000001d != 0x0000001e
> [ 1849.378970] Before while 0x0000001e != 0x0000001f
> [ 1849.381220] Before while 0x0000001f != 0x00000000
> [ 1849.383092] Before while 0x00000000 != 0x00000001
> [ 1849.385513] Before while 0x00000001 != 0x00000002
> [ 1849.387636] Before while 0x00000002 != 0x00000003
> [ 1849.389580] Before while 0x00000003 != 0x00000004
> [ 1849.391561] Before while 0x00000004 != 0x00000005
> [ 1849.393720] Before while 0x00000005 != 0x00000006
> [ 1849.395799] Before while 0x00000006 != 0x00000007
> [ 1849.397941] Before while 0x00000007 != 0x00000008
> [ 1849.399885] Before while 0x00000008 != 0x00000009
> [ 1849.402127] Before while 0x00000009 != 0x0000000a
> [ 1849.405144] Before while 0x0000000a != 0x0000000b
> [ 1849.406376] Before while 0x0000000b != 0x0000000c
> [ 1849.409953] Before while 0x0000000c != 0x0000000d
> [ 1849.410070] fill_rx block, count: 0x00000000 i: 0x0000000d
> [ 1849.410492] Before while 0x0000000d != 0x0000000e
> [ 1849.410610] fill_rx block, count: 0x00000000 i: 0x0000000e
> [ 1849.412598] Before while 0x0000000e != 0x0000000f
> [ 1849.412716] fill_rx block, count: 0x00000000 i: 0x0000000f
> [ 1849.414930] Before while 0x0000000f != 0x00000010
> [ 1849.415048] fill_rx block, count: 0x00000000 i: 0x00000010
> [ 1849.417127] Before while 0x00000010 != 0x00000011
> [ 1849.417244] fill_rx block, count: 0x00000000 i: 0x00000011
> [ 1849.419324] Before while 0x00000011 != 0x00000012
> [ 1849.419441] fill_rx block, count: 0x00000000 i: 0x00000012
> [ 1849.421367] Before while 0x00000012 != 0x00000013
> [ 1849.421486] fill_rx block, count: 0x00000000 i: 0x00000013
> [ 1849.423275] Before while 0x00000013 != 0x00000014
> [ 1849.423392] fill_rx block, count: 0x00000000 i: 0x00000014
> [ 1849.425472] Before while 0x00000014 != 0x00000015
> [ 1849.425591] fill_rx block, count: 0x00000000 i: 0x00000015
> [ 1849.427461] Before while 0x00000015 != 0x00000016
> [ 1849.427579] fill_rx block, count: 0x00000000 i: 0x00000016
> [ 1849.429440] Before while 0x00000016 != 0x00000017
> [ 1849.429557] fill_rx block, count: 0x00000000 i: 0x00000017
> [ 1849.431618] Before while 0x00000017 != 0x00000018
> [ 1849.431736] fill_rx block, count: 0x00000000 i: 0x00000018
> [ 1849.434472] Before while 0x00000018 != 0x00000019
> [ 1849.434590] fill_rx block, count: 0x00000000 i: 0x00000019
> [  854.288510] ipw2200: Firmware error detected.  Restarting.
> [ 1109.987456] Before while 0x00000000 != 0x00000001
> [  854.530339] Before while 0x00000001 != 0x00000002
> [  854.566437] Before while 0x00000002 != 0x00000003
> [  854.596029] Before while 0x00000003 != 0x00000004
> [  854.620725] Before while 0x00000004 != 0x00000005
> [  854.621141] Before while 0x00000005 != 0x00000006
> [  854.621189] Before while 0x00000006 != 0x00000007
> [  854.633339] Before while 0x00000007 != 0x00000008
> [  854.634229] Before while 0x00000008 != 0x00000009
> [  854.639772] Before while 0x00000009 != 0x0000000a
> [  854.639812] Before while 0x0000000a != 0x0000000b
> [  854.674365] Before while 0x0000000b != 0x0000000c
> [  854.697891] Before while 0x0000000c != 0x0000000d
> [  854.721436] Before while 0x0000000d != 0x0000000e
> [  854.744974] Before while 0x0000000e != 0x0000000f
> [  854.768516] Before while 0x0000000f != 0x00000010
> [  854.792058] Before while 0x00000010 != 0x00000011
> [  854.816046] Before while 0x00000011 != 0x00000012
> [  854.816127] Before while 0x00000012 != 0x00000013
> [  854.816172] Before while 0x00000013 != 0x00000014
> [  854.816688] Before while 0x00000014 != 0x00000015
> [  854.857375] Before while 0x00000015 != 0x00000016
> [  855.047194] Before while 0x00000016 != 0x00000017
> [  855.048013] Before while 0x00000017 != 0x00000018
> 
> I'm not sure why the timestamps aren't incrementing.

This seems to indicate that on your machine ipw_rx() is only ever called
for one packet, i.e. the firmware never seems to write more than one
packet into the ring buffer for the host to read, or maybe the host is
fast enough that it can process each interrupt.

That would mean that count never gets above 8, and that the RX queue is
never restocked.  The (count >= 8) part might be specific to the
3945/4965 drivers, since they apparently restock the RX queue in blocks
of 8.  Can you try to change the:

if (count >= 8)

to

if (count)

and see what that does for you?  Also, can you log the value of
"ipw_rx_queue_space (priv->rxq)" on the same line as your "fill_rx
block" printk?

Thanks!
Dan

> >Also, what's the procedure to reproduce this again?  I couldn't get that
> >bit to trigger but I wasn't really sure what to do to stress the 2200
> >that far, otherwise I could have tested the patch more before posting.
> 
> I did not get this when do something like:
> | ssh box 'cat /dev/zero' >  /dev/null
> 
> but it works fine with a firefox download from the same machine. It was
> triggered after a download of 22.9 MiB at rate of about 664 KiB (this is
> what the download window says).
> 
> >Thanks,
> >Dan
> 
> Sebastian


  reply	other threads:[~2008-02-05 15:09 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-26 13:29 ipw2200 stalls on high load Sebastian Siewior
2008-01-28 18:40 ` Chatre, Reinette
2008-01-30 22:57   ` Sebastian Siewior
2008-02-01 22:29     ` Chatre, Reinette
2008-02-04 12:37       ` Dan Williams
2008-02-04 18:23         ` Chatre, Reinette
2008-02-04 22:45           ` Sebastian Siewior
2008-02-04 23:24             ` Dan Williams
2008-02-05  8:35               ` Sebastian Siewior
2008-02-05 15:09                 ` Dan Williams [this message]
2008-02-05 16:50                   ` [Ipw2100-devel] " Cahill, Ben M
2008-02-05 23:53                   ` Sebastian Siewior
2008-02-06  4:56                     ` Dan Williams
2008-02-08  7:50                       ` Sebastian Siewior
2008-01-28 18:53 ` [Ipw2100-devel] " Cahill, Ben M
2008-01-28 22:54   ` Sebastian Siewior
2008-01-30 22:48   ` Sebastian Siewior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1202224154.1243.7.camel@localhost.localdomain \
    --to=dcbw@redhat.com \
    --cc=ipw+2200@ml.breakpoint.cc \
    --cc=ipw2100-devel@lists.sourceforge.net \
    --cc=jketreno@linux.intel.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=reinette.chatre@intel.com \
    --cc=yi.zhu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.