From: Alexander Aring <alex.aring@gmail.com>
To: Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
Cc: linux-wpan@vger.kernel.org, kernel@pengutronix.de
Subject: Re: [PATCH bluetooth-next 3/3] mac802154: remove mib lock
Date: Tue, 12 May 2015 14:22:56 +0200 [thread overview]
Message-ID: <20150512122254.GG733@omega> (raw)
In-Reply-To: <20150512115258.GF733@omega>
On Tue, May 12, 2015 at 01:52:58PM +0200, Alexander Aring wrote:
> Hi,
>
> ...
> > >
> > > Introduce a percpu counter for the sequence numbers, incrementation of
> > > this counter is an atomic operation then and we are sure that we don't
> > > sending the same sequence number when calling this function at the
> > > same time.
> >
> > With this, two threads running on the same interface can send different
> > packets with the same sequence number back to back. Maybe better make
> > it atomic instead of percpu instead to avoid that?
> >
>
> Yes you are right, that's not correct. Because per_cpu is a local
> variable what's the name said _per_ _cpu_. For this kind of very global
> mib value which needs to be incremented after each transmit a atomic_t
> should be correct here and that's also what the comment said.
>
> Damn, why I thought that a percpu variable should be correct here.
>
So I updated the draft with this, I hope that is more correct than the
previous one, which really makes no sense:
diff --git a/include/net/cfg802154.h b/include/net/cfg802154.h
index c6aa1d2..4de59aa 100644
--- a/include/net/cfg802154.h
+++ b/include/net/cfg802154.h
@@ -177,9 +177,9 @@ struct wpan_dev {
__le64 extended_addr;
/* MAC BSN field */
- u8 bsn;
+ atomic_t bsn;
/* MAC DSN field */
- u8 dsn;
+ atomic_t dsn;
u8 min_be;
u8 max_be;
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index 866d27f..b99a6f6 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -365,10 +365,7 @@ static int mac802154_header_create(struct sk_buff *skb,
hdr.fc.type = cb->type;
hdr.fc.security_enabled = cb->secen;
hdr.fc.ack_request = cb->ackreq;
- /* TODO: use atomic_t as dsn, dsn need to be locked when AF_IEEE802154
- * and IEEE802154 6LoWPAN call this at the same time.
- */
- hdr.seq = dev->ieee802154_ptr->dsn++;
+ hdr.seq = atomic_inc_return(&dev->ieee802154_ptr->dsn) & 0xFF;
if (mac802154_set_header_security(sdata, &hdr, cb) < 0)
return -EINVAL;
@@ -464,13 +461,16 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
enum nl802154_iftype type)
{
struct wpan_dev *wpan_dev = &sdata->wpan_dev;
+ u8 tmp;
/* set some type-dependent values */
sdata->vif.type = type;
sdata->wpan_dev.iftype = type;
- get_random_bytes(&wpan_dev->bsn, 1);
- get_random_bytes(&wpan_dev->dsn, 1);
+ get_random_bytes(&tmp, 1);
+ atomic_set(&wpan_dev->bsn, tmp);
+ get_random_bytes(&tmp, 1);
+ atomic_set(&wpan_dev->dsn, tmp);
/* defaults per 802.15.4-2011 */
wpan_dev->min_be = 3;
- Alex
next prev parent reply other threads:[~2015-05-12 12:23 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-10 20:40 [PATCH bluetooth-next 0/3] mac802154: remove pib/mib locks Alexander Aring
2015-05-10 20:40 ` [PATCH bluetooth-next 1/3] mac802154: fix hold rtnl while ioctl Alexander Aring
2015-05-10 20:40 ` [PATCH bluetooth-next 2/3] mac802154: remove pib lock Alexander Aring
2015-05-10 20:40 ` [PATCH bluetooth-next 3/3] mac802154: remove mib lock Alexander Aring
2015-05-12 7:50 ` Alexander Aring
2015-05-12 11:06 ` Phoebe Buckheister
2015-05-12 11:53 ` Alexander Aring
2015-05-12 12:22 ` Alexander Aring [this message]
2015-05-12 12:25 ` Phoebe Buckheister
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=20150512122254.GG733@omega \
--to=alex.aring@gmail.com \
--cc=kernel@pengutronix.de \
--cc=linux-wpan@vger.kernel.org \
--cc=phoebe.buckheister@itwm.fraunhofer.de \
/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.