2013-02-03 01:23:12

by Tejun Heo

[permalink] [raw]
Subject: [PATCH 59/62] mac80211: convert to idr_alloc()

Convert to the much saner new idr interface.

Only compile tested.

Signed-off-by: Tejun Heo <[email protected]>
Cc: Johannes Berg <[email protected]>
Cc: [email protected]
---
This patch depends on an earlier idr changes and I think it would be
best to route these together through -mm. Please holler if there's
any objection. Thanks.

net/mac80211/main.c | 2 --
net/mac80211/tx.c | 18 ++++--------------
2 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 1b087ff..7b5bbea 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -687,8 +687,6 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len,

spin_lock_init(&local->ack_status_lock);
idr_init(&local->ack_status_frames);
- /* preallocate at least one entry */
- idr_pre_get(&local->ack_status_frames, GFP_KERNEL);

sta_info_init(local);

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index e9eadc4..73eb6c1 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1996,24 +1996,14 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
skb = skb_clone(skb, GFP_ATOMIC);
if (skb) {
unsigned long flags;
- int id, r;
+ int id;

spin_lock_irqsave(&local->ack_status_lock, flags);
- r = idr_get_new_above(&local->ack_status_frames,
- orig_skb, 1, &id);
- if (r == -EAGAIN) {
- idr_pre_get(&local->ack_status_frames,
- GFP_ATOMIC);
- r = idr_get_new_above(&local->ack_status_frames,
- orig_skb, 1, &id);
- }
- if (WARN_ON(!id) || id > 0xffff) {
- idr_remove(&local->ack_status_frames, id);
- r = -ERANGE;
- }
+ id = idr_alloc(&local->ack_status_frames, orig_skb,
+ 1, 0x10000, GFP_ATOMIC);
spin_unlock_irqrestore(&local->ack_status_lock, flags);

- if (!r) {
+ if (id >= 0) {
info_id = id;
info_flags |= IEEE80211_TX_CTL_REQ_TX_STATUS;
} else if (skb_shared(skb)) {
--
1.8.1



2013-02-04 17:41:30

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 59/62] mac80211: convert to idr_alloc()

On Sat, 2013-02-02 at 17:21 -0800, Tejun Heo wrote:
> Convert to the much saner new idr interface.
>
> Only compile tested.
>
> Signed-off-by: Tejun Heo <[email protected]>
> Cc: Johannes Berg <[email protected]>
> Cc: [email protected]
> ---
> This patch depends on an earlier idr changes and I think it would be
> best to route these together through -mm. Please holler if there's
> any objection. Thanks.

Looks fine to me, thanks.

johannes



2013-02-04 17:42:38

by Tejun Heo

[permalink] [raw]
Subject: Re: [PATCH 59/62] mac80211: convert to idr_alloc()

On Mon, Feb 04, 2013 at 06:40:24PM +0100, Johannes Berg wrote:
> On Sat, 2013-02-02 at 17:21 -0800, Tejun Heo wrote:
> > Convert to the much saner new idr interface.
> >
> > Only compile tested.
> >
> > Signed-off-by: Tejun Heo <[email protected]>
> > Cc: Johannes Berg <[email protected]>
> > Cc: [email protected]
> > ---
> > This patch depends on an earlier idr changes and I think it would be
> > best to route these together through -mm. Please holler if there's
> > any objection. Thanks.
>
> Looks fine to me, thanks.

Will add Acked-by. Thanks a lot!

--
tejun