From: Seth Forshee <seth.forshee@canonical.com>
To: Arend van Spriel <arend@broadcom.com>
Cc: linux-wireless@vger.kernel.org,
"John W. Linville" <linville@tuxdriver.com>,
"Franky (Zhenhui) Lin" <frankyl@broadcom.com>,
Brett Rudley <brudley@broadcom.com>,
Roland Vossen <rvossen@broadcom.com>,
Kan Yan <kanyan@broadcom.com>,
brcm80211-dev-list@broadcom.com
Subject: Re: [PATCH 01/18] brcmsmac: Rework tx code to avoid internal buffering of packets
Date: Fri, 2 Nov 2012 08:28:32 +0100 [thread overview]
Message-ID: <20121102072832.GA19430@ubuntu-mba51> (raw)
In-Reply-To: <5092B4C0.7060701@broadcom.com>
On Thu, Nov 01, 2012 at 06:43:28PM +0100, Arend van Spriel wrote:
> On 10/26/2012 04:23 PM, Seth Forshee wrote:
> >The brcmsmac internal tx buffering is problematic for a number of
> >reasons. The amount of buffering is excessive (228 packets in addition
> >to the 256 slots in each DMA ring), frames may be dropped due to a lack
> >of flow control, and the structure of the queues complicates the
> >otherwise straightforward mapping of mac80211 queues to device fifos.
> >
> >This patch reworks the transmit code path to eliminate the internal
> >buffering. Frames are immediately handed off to the DMA support rather
> >than passing through an intermediate queue. ieee80211_(stop|wake)_queue()
> >are used for flow control to stop receiving frames when a DMA tx ring is
> >full.
> >
> >To handle aggregation the concept of AMPDU sessions is added to the
> >driver. The AMPDU session allows MPDUs to be temporarily queued by the
> >DMA code until either a full AMPDU has been collected or circumstances
> >dictate that transmission should start with a partial AMPDU. The use of
> >a queue ensures that the tx headers are fully initialized before the
> >buffers are synced for DMA, and it allows non-aggregate frames to be
> >immediately placed in the tx ring so that more frames can be collected
> >for aggregation.
> >
> >Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
> >---
> > drivers/net/wireless/brcm80211/brcmsmac/ampdu.c | 666 ++++++++++-------------
> > drivers/net/wireless/brcm80211/brcmsmac/ampdu.h | 29 +-
> > drivers/net/wireless/brcm80211/brcmsmac/dma.c | 182 ++++++-
> > drivers/net/wireless/brcm80211/brcmsmac/dma.h | 9 +-
> > drivers/net/wireless/brcm80211/brcmsmac/main.c | 514 +++++------------
> > drivers/net/wireless/brcm80211/brcmsmac/main.h | 39 +-
> > drivers/net/wireless/brcm80211/brcmsmac/types.h | 1 -
> > 7 files changed, 628 insertions(+), 812 deletions(-)
>
> Hi Seth,
>
> The idea behind the change is a good move. However, this change is
> quite a overhaul especially for ampdu code. This makes it pretty
> hard to review. At least against the previous implementation. So we
> still need some time to chew on this one. We have been testing it
> and it looks good there.
Great!
The AMPDU changes do look significant, but in large part they're just
rearranging the code.
> Could you somehow split this change into smaller steps?
I'd given a little thought to breaking it up before I sent the patches,
but for the bulk of the changes it's a little challenging to do so
without making some of the commits regress (e.g. break AMPDU in one
commit then fix it in the next one). I'll take a closer look while I'm
travelling and see if I can work something out.
Thanks,
Seth
next prev parent reply other threads:[~2012-11-02 7:28 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-26 14:23 [PATCH 00/18] brcmsmac: Tx rework and expanded debug/trace support Seth Forshee
2012-10-26 14:23 ` [PATCH 01/18] brcmsmac: Rework tx code to avoid internal buffering of packets Seth Forshee
2012-11-01 17:43 ` Arend van Spriel
2012-11-02 7:28 ` Seth Forshee [this message]
2012-10-26 14:23 ` [PATCH 02/18] brcmsmac: Use correct descriptor count when calculating next rx descriptor Seth Forshee
2012-10-26 14:23 ` [PATCH 03/18] brcmsmac: Reduce number of entries in tx DMA rings Seth Forshee
2012-10-26 14:23 ` [PATCH 04/18] brcm80211: Allow trace support to be enabled separately from debug Seth Forshee
2012-10-26 14:23 ` [PATCH 05/18] brcm80211: Add macro for checking if debug log levels are enabled Seth Forshee
2012-10-26 14:23 ` [PATCH 06/18] brcm80211: Convert log message levels to debug levels Seth Forshee
2012-10-26 14:23 ` [PATCH 07/18] brcmsmac: Add module parameter for setting the debug level Seth Forshee
2012-10-26 14:23 ` [PATCH 08/18] brcmsmac: Add support for writing debug messages to the trace buffer Seth Forshee
2012-10-26 14:23 ` [PATCH 09/18] brcmsmac: Use debug macros for general error and debug statements Seth Forshee
2012-10-26 14:23 ` [PATCH 10/18] brcmsmac: Add BRCMS_DBG_MAC80211 debug macro Seth Forshee
2012-10-26 14:23 ` [PATCH 11/18] brcmsmac: Add RX and TX debug macros Seth Forshee
2012-10-26 14:23 ` [PATCH 12/18] brcmsmac: Add INT debug macro Seth Forshee
2012-10-26 14:23 ` [PATCH 13/18] brcmsmac: Add DMA " Seth Forshee
2012-10-26 14:23 ` [PATCH 14/18] brcmsmac: Add HT " Seth Forshee
2012-10-26 14:23 ` [PATCH 15/18] brcmsmac: Improve tx trace and debug support Seth Forshee
2012-10-26 14:23 ` [PATCH 16/18] brcmsmac: Add tracepoint for macintstatus Seth Forshee
2012-10-26 14:23 ` [PATCH 17/18] brcmsmac: Add tracepoint for AMPDU session information Seth Forshee
2012-10-26 14:23 ` [PATCH 18/18] brcmsmac: Remove some noisy but uninformative debug messages Seth Forshee
2012-10-26 15:37 ` [PATCH 00/18] brcmsmac: Tx rework and expanded debug/trace support Arend van Spriel
2012-10-26 16:04 ` Seth Forshee
2012-11-02 10:49 ` Karl Beldan
2012-11-03 11:15 ` Johannes Berg
2012-11-03 13:50 ` Karl Beldan
2012-11-04 20:11 ` Seth Forshee
2012-11-03 17:56 ` Arend van Spriel
2012-11-04 20:25 ` Seth Forshee
2012-11-14 16:05 ` Seth Forshee
2012-11-14 19:40 ` Arend van Spriel
2012-11-06 7:12 ` Daniel Wagner
2012-11-06 8:19 ` Daniel Wagner
2012-11-06 10:02 ` Seth Forshee
2012-11-06 12:16 ` Daniel Wagner
2012-11-06 12:47 ` Seth Forshee
2012-11-06 12:49 ` Arend van Spriel
2012-11-06 10:20 ` Arend van Spriel
2012-11-06 10:44 ` Piotr Haber
2012-11-06 12:27 ` Daniel Wagner
2012-11-06 12:54 ` Seth Forshee
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=20121102072832.GA19430@ubuntu-mba51 \
--to=seth.forshee@canonical.com \
--cc=arend@broadcom.com \
--cc=brcm80211-dev-list@broadcom.com \
--cc=brudley@broadcom.com \
--cc=frankyl@broadcom.com \
--cc=kanyan@broadcom.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=rvossen@broadcom.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).