From: Michael Buesch <mb@bu3sch.de>
To: Larry Finger <larry.finger@lwfinger.net>
Cc: John Linville <linville@tuxdriver.com>,
Bcm43xx-dev@lists.berlios.de, linux-wireless@vger.kernel.org
Subject: Re: [PATCH V2] b43: Changes to enable BCM4311 rev 02 with wireless core revision 13
Date: Fri, 23 Nov 2007 14:47:18 +0100 [thread overview]
Message-ID: <200711231447.19262.mb@bu3sch.de> (raw)
In-Reply-To: <474666F7.6090405@lwfinger.net>
On Friday 23 November 2007 06:36:55 Larry Finger wrote:
> Michael Buesch wrote:
> >
> > partially acked.
> > Though, I'm not quite sure yet why you remove that
> > address extension bits. The specs clearly say that they _are_ there.
> > And it makes sense to use them, as two bytes of the address are used
> > for the routing stuff. So the highest 2 bits of the address have to be put
> > somewhere else. That's the "Transmit Channel Control Word" and
> > "Receive Channel Control Word" where 0x00030000 are the extension bits.
> >
>
> The appropriate section of dmacontroller_setup() in my patched source is as follows:
>
> if (ring->tx) {
> if (ring->dma64) {
> u64 ringbase = (u64) (ring->dmabase);
>
> b43_dma_write(ring, B43_DMA64_TXCTL,
> B43_DMA64_TXENABLE);
> b43_dma_write(ring, B43_DMA64_TXRINGLO,
> (ringbase & 0xFFFFFFFF));
> b43_dma_write(ring, B43_DMA64_TXRINGHI,
> (ringbase >> 32));
> } else {
> ...... untouched 32-bit stuff ....
> }
> } else {
> err = alloc_initial_descbuffers(ring);
> if (err)
> goto out;
> if (ring->dma64) {
> u64 ringbase = (u64) (ring->dmabase);
>
> value = (ring->frameoffset << B43_DMA64_RXFROFF_SHIFT)
> | B43_DMA64_RXENABLE;
> b43_dma_write(ring, B43_DMA64_RXCTL, value);
> b43_dma_write(ring, B43_DMA64_RXRINGLO,
> (ringbase & 0xFFFFFFFF));
> b43_dma_write(ring, B43_DMA64_RXRINGHI,
> (ringbase >> 32));
> b43_dma_write(ring, B43_DMA64_RXINDEX, ring->nr_slots *
> sizeof(struct b43_dmadesc64));
> } else {
> ........... 32-bit stuff ........
> }
>
> No address extensions are used here because the specs clearly state that a flat 64-bit address is
> used to specify the Descriptor Ring address. My code matches the specs.
I'm not sure which specifications you use, but here it clearly describes the
extension bits:
http://bcm-v4.sipsolutions.net/802.11/DMA#TransmitChannelControlWord-1
> > However I do think that this might be related to the bug you are explaining
> > in the comment:
> >> + * For unknown reasons - possibly a hardware error - the BCM4311 rev
> >> + * 02, which uses 64-bit DMA, needs the ring buffer in very low memory,
> >> + * which accounts for the GFP_DMA flag below.
> the error, and that part does not use any extension bits. Secondly, the address extension stuff
> would only apply if my computer had more than 2^(62) bytes of RAM, which is something like 10
> billion GB - an amount that probably exceeds the total RAM in the world.
This is not true. We live in a world with IO-MMUs.
--
Greetings Michael.
prev parent reply other threads:[~2007-11-23 13:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-21 21:38 [PATCH V2] b43: Changes to enable BCM4311 rev 02 with wireless core revision 13 Larry Finger
2007-11-22 17:34 ` Michael Buesch
2007-11-23 5:36 ` Larry Finger
2007-11-23 13:47 ` Michael Buesch [this message]
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=200711231447.19262.mb@bu3sch.de \
--to=mb@bu3sch.de \
--cc=Bcm43xx-dev@lists.berlios.de \
--cc=larry.finger@lwfinger.net \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.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.