From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thommy Jakobsson Date: Sun, 5 May 2013 21:59:53 +0200 (CEST) Subject: [PATCH] B43: Handle DMA RX descriptor underrun In-Reply-To: References: <20130505192405.0cf4350e@milhouse> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: =?ISO-8859-2?Q?Rafa=B3_Mi=B3ecki?= Cc: =?ISO-8859-15?Q?Michael_B=FCsch?= , linville@tuxdriver.com, linux-wireless@vger.kernel.org, b43-dev@lists.infradead.org, piotras@gmail.com, Larry.Finger@lwfinger.net On Sun, 5 May 2013, Rafa? Mi?ecki wrote: > 2013/5/5 Michael B?sch : > > On Sun, 5 May 2013 18:31:20 +0200 > > Rafa? Mi?ecki wrote: > > > >> Still worth considering is my previous e-mail. Why writing (for > >> example) 1 to RXSTOPINDEX doesn't stop firmware from using slot 1? > > > > What makes you think this register does not work? > > Take a look at this: > > [ 327.224976] [DBG] old current:5 new current:6 > [ 327.224982] [DBG] reading slot 5 > [ 327.224997] [DBG] writing stop slot 6 > > In above ring->slot was 5, but IRQ was generated, and we read new > "current" using get_current_rxslot. It appeared to be 6. So we read > packet from slot 5 and then called > ops->set_current_rxslot(ring, 6); > AFAIU hardware shouldn't use slot 6, right? But take a look at what > happens next: > > [ 327.319582] [DBG] old current:6 new current:7 > [ 327.319590] [DBG] reading slot 6 > [ 327.319619] [DBG] writing stop slot 7 > > Hardware generated IRQ and we get_current_rxslot returned 7. It means > we're allowed to read slots up to 7 (excluding). It other words it > means firmware used slot 6... but 100ms earlier we forbid firmware to > use slot 6! > > This is part I don't understand. It looks like firmware ignores what > we set with the ops->set_current_rxslot As I wrote before, you cannot remove a slot that the device already marked as next. The register that you write to with set_current_rxslot is only checked when the firmware steps up the current descriptor register. At least thats what I have seen from my testing. //Thommy