From: "Arend van Spriel" <arend@broadcom.com>
To: "Seth Forshee" <seth.forshee@canonical.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: Thu, 1 Nov 2012 18:43:28 +0100 [thread overview]
Message-ID: <5092B4C0.7060701@broadcom.com> (raw)
In-Reply-To: <1351261413-20821-2-git-send-email-seth.forshee@canonical.com>
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.
Could you somehow split this change into smaller steps?
Gr. Avs
next prev parent reply other threads:[~2012-11-01 17:43 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 [this message]
2012-11-02 7:28 ` Seth Forshee
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=5092B4C0.7060701@broadcom.com \
--to=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 \
--cc=seth.forshee@canonical.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).