mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-18 07:35:12 +08:00
mac80211: convert to idr_alloc()
Convert to the much saner new idr interface. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
19a101a02e
commit
9475af6e44
@ -647,8 +647,6 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len,
|
|||||||
|
|
||||||
spin_lock_init(&local->ack_status_lock);
|
spin_lock_init(&local->ack_status_lock);
|
||||||
idr_init(&local->ack_status_frames);
|
idr_init(&local->ack_status_frames);
|
||||||
/* preallocate at least one entry */
|
|
||||||
idr_pre_get(&local->ack_status_frames, GFP_KERNEL);
|
|
||||||
|
|
||||||
sta_info_init(local);
|
sta_info_init(local);
|
||||||
|
|
||||||
|
@ -2017,24 +2017,14 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
|
|||||||
skb = skb_clone(skb, GFP_ATOMIC);
|
skb = skb_clone(skb, GFP_ATOMIC);
|
||||||
if (skb) {
|
if (skb) {
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int id, r;
|
int id;
|
||||||
|
|
||||||
spin_lock_irqsave(&local->ack_status_lock, flags);
|
spin_lock_irqsave(&local->ack_status_lock, flags);
|
||||||
r = idr_get_new_above(&local->ack_status_frames,
|
id = idr_alloc(&local->ack_status_frames, orig_skb,
|
||||||
orig_skb, 1, &id);
|
1, 0x10000, GFP_ATOMIC);
|
||||||
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;
|
|
||||||
}
|
|
||||||
spin_unlock_irqrestore(&local->ack_status_lock, flags);
|
spin_unlock_irqrestore(&local->ack_status_lock, flags);
|
||||||
|
|
||||||
if (!r) {
|
if (id >= 0) {
|
||||||
info_id = id;
|
info_id = id;
|
||||||
info_flags |= IEEE80211_TX_CTL_REQ_TX_STATUS;
|
info_flags |= IEEE80211_TX_CTL_REQ_TX_STATUS;
|
||||||
} else if (skb_shared(skb)) {
|
} else if (skb_shared(skb)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user