From: Bob Copeland <me@bobcopeland.com>
To: Dmitry Tarnyagin <abi.dmitryt@gmail.com>
Cc: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>,
linux-wireless@vger.kernel.org
Subject: Re: [PATCH 09/21] cw1200: txrx.*, implementation of datapath.
Date: Tue, 8 May 2012 08:54:52 -0400 [thread overview]
Message-ID: <20120508125452.GA15792@localhost> (raw)
In-Reply-To: <CAMG6FYgQLexa=VAqrLmMxscef=bDyqPo6mThYAeZGqB6p5Zo_g@mail.gmail.com>
On Tue, May 08, 2012 at 09:09:24AM +0200, Dmitry Tarnyagin wrote:
> Yes, correct, you mentioned all the 3 problems with the minstrel.
> "Buggy" is not the best word here, minstrel just behaves in this way,
> and the behavior is specified. It can be changed (at least last two),
> but carefully and with respect to other minstrel clients.
OK, thanks. I (and others) had also noticed these issues a while ago;
I guess we should take a look at fixing it in the core.
> As I remember compiler changes divide to a shift only for
> unsigned divisions, isn't it? Or do modern gcc-s changes it for signed
> divs as well?
It's easy enough to check. I can't speak for ARM, but on gcc 4.6.0
for x86, I get the following:
signed x / 2 compiles to (%eax = dividend):
mov %eax,%edx ; put x into edx
shr $0x1f,%edx ; edx >>= 31, so sign of x is LSB of edx
add %edx,%eax ; eax += 1 (round up) if eax is signed
sar %eax ; arithmetic (sign-preserving) shift right eax
This sequence corrects for, say, -3 / 2 == -1 vs -3 >> 1 == -2.
unsigned x / 2 compiles to:
shr %eax ; same as x >> 1
Gcc has some neat tricks -- even something like "x * 22/7" gets turned
into a pair of multiplies.
> Well, it's datapath. This code is executed for every SDU in data traffic,
> with frequency ~3kHz on target throughput. For me it's a good reason
> to explicitly eliminate divisions :)
Fair enough :)
--
Bob Copeland %% www.bobcopeland.com
next prev parent reply other threads:[~2012-05-08 12:55 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <d53e019b1a0bcd29c2c367fbe5665413f2d33938-submit>
2012-03-02 1:41 ` [PATCH 00/21] cw1200: mac80211-based driver for ST-Ericsson CW1200 device Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 01/21] cw1200: cw1200.h, private driver data Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 02/21] cw1200: cw1200_plat.h, definition of the driver'ss platform data Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 03/21] cw1200: sbus.h, common device interface abstraction Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 04/21] cw1200: cw1200_sdio.c, implementation of SDIO wrapper for the driver Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 05/21] cw1200: hwio.*, device reg/mem map and low-level i/o primitives Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 06/21] cw1200: fwio.*, firmware downloading code for the cw1200 driver Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 07/21] cw1200: queue.*, implementation of TX queues of " Dmitry Tarnyagin
2012-03-02 8:33 ` Johannes Berg
2012-03-02 15:32 ` Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 08/21] cw1200: wsm.*, implementation of device high-level interface Dmitry Tarnyagin
2012-03-02 8:34 ` Johannes Berg
2012-03-02 8:41 ` Joe Perches
2012-03-02 1:41 ` [PATCH 09/21] cw1200: txrx.*, implementation of datapath Dmitry Tarnyagin
2012-05-07 12:53 ` Bob Copeland
2012-05-08 7:09 ` Dmitry Tarnyagin
2012-05-08 12:54 ` Bob Copeland [this message]
2012-03-02 1:41 ` [PATCH 10/21] cw1200: ht.h, small helper header with HT definitions Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 11/21] cw1200: bh.*, device serving thread Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 12/21] cw1200: sta.*, mac80211 STA callbacks Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 13/21] cw1200: ap.*, mac80211 AP callbacks Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 14/21] cw1200: scan.*, mac80211 hw_scan callback Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 15/21] cw1200: debug.*, implementation of the driver's debugfs Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 16/21] cw1200: itp.*, internal device test and calibration code Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 17/21] cw1200: pm.*, power management code Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 18/21] cw1200: main.c, core initialization code Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 19/21] cw1200: TODO list Dmitry Tarnyagin
2012-03-02 8:51 ` Johannes Berg
2012-03-02 1:41 ` [PATCH 20/21] cw1200: Credits Dmitry Tarnyagin
2012-03-02 1:41 ` [PATCH 21/21] cw1200: Kconfig + Makefile for the driver Dmitry Tarnyagin
2012-03-02 8:50 ` Johannes Berg
2012-03-02 15:45 ` Dmitry Tarnyagin
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=20120508125452.GA15792@localhost \
--to=me@bobcopeland.com \
--cc=abi.dmitryt@gmail.com \
--cc=dmitry.tarnyagin@stericsson.com \
--cc=linux-wireless@vger.kernel.org \
/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.