From: David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
To: sven.eckelmann-Mmb7MZpHnFY@public.gmane.org
Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
b.a.t.m.a.n-ZwoEplunGu2X36UT3dwlltHuzzzSOjJt@public.gmane.org
Subject: Re: [PATCH] net: Add batman-adv meshing protocol
Date: Mon, 19 Jul 2010 21:26:25 -0700 (PDT) [thread overview]
Message-ID: <20100719.212625.255369607.davem@davemloft.net> (raw)
In-Reply-To: <1279291156-5297-2-git-send-email-sven.eckelmann-Mmb7MZpHnFY@public.gmane.org>
From: Sven Eckelmann <sven.eckelmann-Mmb7MZpHnFY@public.gmane.org>
Date: Fri, 16 Jul 2010 16:39:16 +0200
> +/* count the hamming weight, how many good packets did we receive? just count
> + * the 1's. The inner loop uses the Kernighan algorithm, see
> + * http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetKernighan
> + */
> +int bit_packet_count(TYPE_OF_WORD *seq_bits)
> +{
> + int i, hamming = 0;
> + TYPE_OF_WORD word;
> +
> + for (i = 0; i < NUM_WORDS; i++) {
> + word = seq_bits[i];
> +
> + while (word) {
> + word &= word-1;
> + hamming++;
> + }
> + }
> + return hamming;
> +}
The kernel has a hamming weight library function which takes advantage
of population count instructions on cpus that suport it, and also has
a sw version than is faster than what you're doing here, please use
it.
The interfaces are called "hweight{8,16,32,64}()" where the number in
the name indicates the bit-size of the word the interface operates on.
I also notice that this code uses it's own internal buffering scheme
with kmalloc()'d buffers, then seperately allocates actual SKB's and
copies the data there.
Just use the SKB facilities how they were designed to be used, instead
of needlessly inventing new things. Allocate your initial SKB and put
the initial forwarding header in it, then when you want to send a copy
off, skb_clone() it, and push the other bits you want at the head
and/or the tail of the cloned SKB, then simply send it off.
next prev parent reply other threads:[~2010-07-20 4:26 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-16 14:39 [PATCH 0/1] Reviewing batman-adv for net/ Sven Eckelmann
2010-07-16 14:39 ` [PATCH] net: Add batman-adv meshing protocol Sven Eckelmann
[not found] ` <1279291156-5297-2-git-send-email-sven.eckelmann-Mmb7MZpHnFY@public.gmane.org>
2010-07-20 4:26 ` David Miller [this message]
[not found] ` <20100719.212625.255369607.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-07-20 8:28 ` Sven Eckelmann
2010-07-20 16:59 ` David Miller
[not found] ` <20100720.095928.113690788.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2010-07-20 17:16 ` Sven Eckelmann
2010-07-20 18:23 ` Marek Lindner
2010-07-20 18:41 ` [B.A.T.M.A.N.] " Abraham Arce
[not found] ` <AANLkTim4QSjgC2BbrEJEpefQahbkSgaRPPfJ-N0aPL-E-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-07-20 18:49 ` Sven Eckelmann
2010-07-20 18:57 ` [B.A.T.M.A.N.] " Ben Hutchings
[not found] ` <1279652233.2110.51.camel-xQnnTUlwzDrdvaEqJLTMTA9jg9n5Vt1AMm0uRHvK7Nw@public.gmane.org>
2010-07-20 19:21 ` Sven Eckelmann
2010-07-16 19:41 ` [PATCH 0/1] Reviewing batman-adv for net/ David Miller
2010-07-16 19:47 ` Sven Eckelmann
-- strict thread matches above, loose matches on Subject: below --
2010-06-26 0:14 Sven Eckelmann
2010-06-26 0:14 ` [PATCH] net: Add batman-adv meshing protocol Sven Eckelmann
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=20100719.212625.255369607.davem@davemloft.net \
--to=davem-ft/pcqaiutieiz0/mpfg9q@public.gmane.org \
--cc=b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r@public.gmane.org \
--cc=b.a.t.m.a.n-ZwoEplunGu2X36UT3dwlltHuzzzSOjJt@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=sven.eckelmann-Mmb7MZpHnFY@public.gmane.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 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).