public inbox for b43-dev@lists.infradead.org
 help / color / mirror / Atom feed
* [RFT][PATCH] b43: DMA: debug rings alignment
@ 2013-03-14 20:41 Rafał Miłecki
  2013-03-14 20:58 ` ISE Development
  0 siblings, 1 reply; 5+ messages in thread
From: Rafał Miłecki @ 2013-03-14 20:41 UTC (permalink / raw)
  To: b43-dev

---
ISE: can you try this with your card? Provide output including "DBG"
messages please.
Hope it compiles.
---
 drivers/net/wireless/b43/dma.c |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/net/wireless/b43/dma.c b/drivers/net/wireless/b43/dma.c
index 38bc5a7..30da6ce 100644
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -915,6 +915,21 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev *dev,
 	ring->last_injected_overflow = jiffies;
 #endif
 
+	if (type == B43_DMA_64BIT) {
+		u32 tmp;
+		if (for_tx) {
+			b43_write32(dev, ring->mmio_base + B43_DMA64_TXRINGLO, 0xff0);
+			tmp = b43_read32(dev, ring->mmio_base + B43_DMA64_TXRINGLO);
+			pr_info("[DBG] Testing TX on ring 0x%X: 0x%X\n", ring->mmio_base, tmp);
+		} else {
+			b43_write32(dev, ring->mmio_base + B43_DMA64_RXRINGLO, 0xff0);
+			tmp = b43_read32(dev, ring->mmio_base + B43_DMA64_RXRINGLO);
+			pr_info("[DBG] Testing RX on ring 0x%X: 0x%X\n", ring->mmio_base, tmp);
+		}
+	} else {
+		pr_err("[DBG] Whoops, it's not 64b DMA engine!\n");
+	}
+
 	if (for_tx) {
 		/* Assumption: B43_TXRING_SLOTS can be divided by TX_SLOTS_PER_FRAME */
 		BUILD_BUG_ON(B43_TXRING_SLOTS % TX_SLOTS_PER_FRAME != 0);
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [RFT][PATCH] b43: DMA: debug rings alignment
  2013-03-14 20:41 [RFT][PATCH] b43: DMA: debug rings alignment Rafał Miłecki
@ 2013-03-14 20:58 ` ISE Development
  2013-03-14 22:32   ` ISE Development
  0 siblings, 1 reply; 5+ messages in thread
From: ISE Development @ 2013-03-14 20:58 UTC (permalink / raw)
  To: b43-dev

On Thursday 14 Mar 2013 21:41:21 Rafa? Mi?ecki wrote:
> index 38bc5a7..30da6ce 100644
> --- a/drivers/net/wireless/b43/dma.c
> +++ b/drivers/net/wireless/b43/dma.c
> @@ -915,6 +915,21 @@ struct b43_dmaring *b43_setup_dmaring(struct b43_wldev
> *dev, ring->last_injected_overflow = jiffies;
>  #endif
>  
> +       if (type == B43_DMA_64BIT) {
> +               u32 tmp;
> +               if (for_tx) {
> +                       b43_write32(dev, ring->mmio_base +
> B43_DMA64_TXRINGLO, 0xff0); +                       tmp = b43_read32(dev,
> ring->mmio_base + B43_DMA64_TXRINGLO);
> +                       pr_info("[DBG] Testing TX on ring 0x%X: 0x%X\n",
> ring->mmio_base, tmp); +               } else {
> +                       b43_write32(dev, ring->mmio_base +
> B43_DMA64_RXRINGLO, 0xff0); +                       tmp = b43_read32(dev,
> ring->mmio_base + B43_DMA64_RXRINGLO);
> +                       pr_info("[DBG] Testing RX on ring 0x%X: 0x%X\n",
> ring->mmio_base, tmp); +               }
> +       } else {
> +               pr_err("[DBG] Whoops, it's not 64b DMA engine!\n");
> +       }
> +
>         if (for_tx) {
>                 /* Assumption: B43_TXRING_SLOTS can be divided by
> TX_SLOTS_PER_FRAME */ BUILD_BUG_ON(B43_TXRING_SLOTS % TX_SLOTS_PER_FRAME !=
> 0);

Will start testing now...

-- 
-- isedev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RFT][PATCH] b43: DMA: debug rings alignment
  2013-03-14 20:58 ` ISE Development
@ 2013-03-14 22:32   ` ISE Development
  2013-03-14 23:46     ` ISE Development
  2013-03-15  6:33     ` Rafał Miłecki
  0 siblings, 2 replies; 5+ messages in thread
From: ISE Development @ 2013-03-14 22:32 UTC (permalink / raw)
  To: b43-dev

On Thursday 14 Mar 2013 21:58:18 ISE Development wrote:
> On Thursday 14 Mar 2013 21:41:21 Rafa? Mi?ecki wrote:
> > index 38bc5a7..30da6ce 100644
> > --- a/drivers/net/wireless/b43/dma.c
> > +++ b/drivers/net/wireless/b43/dma.c
> > @@ -915,6 +915,21 @@ struct b43_dmaring *b43_setup_dmaring(struct
> > b43_wldev
> > *dev, ring->last_injected_overflow = jiffies;
> > 
> >  #endif
> > 
> > +       if (type == B43_DMA_64BIT) {
> > +               u32 tmp;
> > +               if (for_tx) {
> > +                       b43_write32(dev, ring->mmio_base +
> > B43_DMA64_TXRINGLO, 0xff0); +                       tmp = b43_read32(dev,
> > ring->mmio_base + B43_DMA64_TXRINGLO);
> > +                       pr_info("[DBG] Testing TX on ring 0x%X: 0x%X\n",
> > ring->mmio_base, tmp); +               } else {
> > +                       b43_write32(dev, ring->mmio_base +
> > B43_DMA64_RXRINGLO, 0xff0); +                       tmp = b43_read32(dev,
> > ring->mmio_base + B43_DMA64_RXRINGLO);
> > +                       pr_info("[DBG] Testing RX on ring 0x%X: 0x%X\n",
> > ring->mmio_base, tmp); +               }
> > +       } else {
> > +               pr_err("[DBG] Whoops, it's not 64b DMA engine!\n");
> > +       }
> > +
> > 
> >         if (for_tx) {
> >         
> >                 /* Assumption: B43_TXRING_SLOTS can be divided by
> > 
> > TX_SLOTS_PER_FRAME */ BUILD_BUG_ON(B43_TXRING_SLOTS % TX_SLOTS_PER_FRAME
> > !=
> > 0);
> 
> Will start testing now...

Here's the output:

[38667.424687] b43-phy0 debug: [DBG] Testing TX on ring 0x200: 0x0
[38667.424733] b43-phy0 debug: [DBG] Testing TX on ring 0x240: 0x0
[38667.424787] b43-phy0 debug: [DBG] Testing TX on ring 0x280: 0x0
[38667.424840] b43-phy0 debug: [DBG] Testing TX on ring 0x2C0: 0x0
[38667.424894] b43-phy0 debug: [DBG] Testing TX on ring 0x300: 0x0
[38667.424948] b43-phy0 debug: [DBG] Testing RX on ring 0x200: 0x0

-- 
-- isedev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RFT][PATCH] b43: DMA: debug rings alignment
  2013-03-14 22:32   ` ISE Development
@ 2013-03-14 23:46     ` ISE Development
  2013-03-15  6:33     ` Rafał Miłecki
  1 sibling, 0 replies; 5+ messages in thread
From: ISE Development @ 2013-03-14 23:46 UTC (permalink / raw)
  To: b43-dev

On Thursday 14 Mar 2013 23:32:23 ISE Development wrote:
> On Thursday 14 Mar 2013 21:58:18 ISE Development wrote:
> > On Thursday 14 Mar 2013 21:41:21 Rafa? Mi?ecki wrote:
> > > index 38bc5a7..30da6ce 100644
> > > --- a/drivers/net/wireless/b43/dma.c
> > > +++ b/drivers/net/wireless/b43/dma.c
> > > @@ -915,6 +915,21 @@ struct b43_dmaring *b43_setup_dmaring(struct
> > > b43_wldev
> > > *dev, ring->last_injected_overflow = jiffies;
> > > 
> > >  #endif
> > > 
> > > +       if (type == B43_DMA_64BIT) {
> > > +               u32 tmp;
> > > +               if (for_tx) {
> > > +                       b43_write32(dev, ring->mmio_base +
> > > B43_DMA64_TXRINGLO, 0xff0); 
> > > +                       tmp = b43_read32(dev, ring->mmio_base +
> > > B43_DMA64_TXRINGLO);
> > > +                       pr_info("[DBG] Testing TX on ring 0x%X: 0x%X\n",
> > > ring->mmio_base, tmp); 
> > > +               } else {
> > > +                       b43_write32(dev, ring->mmio_base +
> > > B43_DMA64_RXRINGLO, 0xff0);
> > > +                       tmp = b43_read32(dev, ring->mmio_base +
> > > B43_DMA64_RXRINGLO);
> > > +                       pr_info("[DBG] Testing RX on ring 0x%X: 0x%X\n",
> > > ring->mmio_base, tmp);
> > > +               }
> > > +       } else {
> > > +               pr_err("[DBG] Whoops, it's not 64b DMA engine!\n");
> > > +       }
> > > +
> > > 
> > >         if (for_tx) {
> > >         
> > >                 /* Assumption: B43_TXRING_SLOTS can be divided by
> > > 
> > > TX_SLOTS_PER_FRAME */ BUILD_BUG_ON(B43_TXRING_SLOTS % TX_SLOTS_PER_FRAME
> > > !=
> > > 0);
> > 
> > Will start testing now...
> 
> Here's the output:
> 
> [38667.424687] b43-phy0 debug: [DBG] Testing TX on ring 0x200: 0x0
> [38667.424733] b43-phy0 debug: [DBG] Testing TX on ring 0x240: 0x0
> [38667.424787] b43-phy0 debug: [DBG] Testing TX on ring 0x280: 0x0
> [38667.424840] b43-phy0 debug: [DBG] Testing TX on ring 0x2C0: 0x0
> [38667.424894] b43-phy0 debug: [DBG] Testing TX on ring 0x300: 0x0
> [38667.424948] b43-phy0 debug: [DBG] Testing RX on ring 0x200: 0x0

Other than that, similar error sequence:

- hits slot 138 on ring 3, then out of order errors
- hits slot 208 on ring 1, then out of order errors
- AP times out connection (to be expected)

-- 
-- isedev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RFT][PATCH] b43: DMA: debug rings alignment
  2013-03-14 22:32   ` ISE Development
  2013-03-14 23:46     ` ISE Development
@ 2013-03-15  6:33     ` Rafał Miłecki
  1 sibling, 0 replies; 5+ messages in thread
From: Rafał Miłecki @ 2013-03-15  6:33 UTC (permalink / raw)
  To: b43-dev

2013/3/14 ISE Development <isedev@gmail.com>:
> On Thursday 14 Mar 2013 21:58:18 ISE Development wrote:
>> Will start testing now...
>
> Here's the output:
>
> [38667.424687] b43-phy0 debug: [DBG] Testing TX on ring 0x200: 0x0
> [38667.424733] b43-phy0 debug: [DBG] Testing TX on ring 0x240: 0x0
> [38667.424787] b43-phy0 debug: [DBG] Testing TX on ring 0x280: 0x0
> [38667.424840] b43-phy0 debug: [DBG] Testing TX on ring 0x2C0: 0x0
> [38667.424894] b43-phy0 debug: [DBG] Testing TX on ring 0x300: 0x0
> [38667.424948] b43-phy0 debug: [DBG] Testing RX on ring 0x200: 0x0

Whoops, so this hardware doesn't support unaligned addressing (address
based, not index based). My alternative solution won't even apply in
this case. Thanks for testing.

-- 
Rafa?

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-03-15  6:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-14 20:41 [RFT][PATCH] b43: DMA: debug rings alignment Rafał Miłecki
2013-03-14 20:58 ` ISE Development
2013-03-14 22:32   ` ISE Development
2013-03-14 23:46     ` ISE Development
2013-03-15  6:33     ` Rafał Miłecki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox