Commit 6062546d authored by Loic Poulain's avatar Loic Poulain Committed by Kalle Valo

wcn36xx: Remove useless skb spinlock

Each DXE control block is associated to a specific channel.
The channel lock is always taken before accessing a control block.
There is no need to have an extra (useless) spinlock for the control
block skb.
Signed-off-by: default avatarLoic Poulain <loic.poulain@linaro.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 1391cce7
...@@ -78,7 +78,6 @@ static int wcn36xx_dxe_allocate_ctl_block(struct wcn36xx_dxe_ch *ch) ...@@ -78,7 +78,6 @@ static int wcn36xx_dxe_allocate_ctl_block(struct wcn36xx_dxe_ch *ch)
if (!cur_ctl) if (!cur_ctl)
goto out_fail; goto out_fail;
spin_lock_init(&cur_ctl->skb_lock);
cur_ctl->ctl_blk_order = i; cur_ctl->ctl_blk_order = i;
if (i == 0) { if (i == 0) {
ch->head_blk_ctl = cur_ctl; ch->head_blk_ctl = cur_ctl;
...@@ -377,12 +376,11 @@ static void reap_tx_dxes(struct wcn36xx *wcn, struct wcn36xx_dxe_ch *ch) ...@@ -377,12 +376,11 @@ static void reap_tx_dxes(struct wcn36xx *wcn, struct wcn36xx_dxe_ch *ch)
/* Keep frame until TX status comes */ /* Keep frame until TX status comes */
ieee80211_free_txskb(wcn->hw, ctl->skb); ieee80211_free_txskb(wcn->hw, ctl->skb);
} }
spin_lock(&ctl->skb_lock);
if (wcn->queues_stopped) { if (wcn->queues_stopped) {
wcn->queues_stopped = false; wcn->queues_stopped = false;
ieee80211_wake_queues(wcn->hw); ieee80211_wake_queues(wcn->hw);
} }
spin_unlock(&ctl->skb_lock);
ctl->skb = NULL; ctl->skb = NULL;
} }
...@@ -654,8 +652,6 @@ int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn, ...@@ -654,8 +652,6 @@ int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn,
spin_lock_irqsave(&ch->lock, flags); spin_lock_irqsave(&ch->lock, flags);
ctl = ch->head_blk_ctl; ctl = ch->head_blk_ctl;
spin_lock(&ctl->next->skb_lock);
/* /*
* If skb is not null that means that we reached the tail of the ring * If skb is not null that means that we reached the tail of the ring
* hence ring is full. Stop queues to let mac80211 back off until ring * hence ring is full. Stop queues to let mac80211 back off until ring
...@@ -664,11 +660,9 @@ int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn, ...@@ -664,11 +660,9 @@ int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn,
if (NULL != ctl->next->skb) { if (NULL != ctl->next->skb) {
ieee80211_stop_queues(wcn->hw); ieee80211_stop_queues(wcn->hw);
wcn->queues_stopped = true; wcn->queues_stopped = true;
spin_unlock(&ctl->next->skb_lock);
spin_unlock_irqrestore(&ch->lock, flags); spin_unlock_irqrestore(&ch->lock, flags);
return -EBUSY; return -EBUSY;
} }
spin_unlock(&ctl->next->skb_lock);
ctl->skb = NULL; ctl->skb = NULL;
desc = ctl->desc; desc = ctl->desc;
......
...@@ -422,7 +422,6 @@ struct wcn36xx_dxe_ctl { ...@@ -422,7 +422,6 @@ struct wcn36xx_dxe_ctl {
unsigned int desc_phy_addr; unsigned int desc_phy_addr;
int ctl_blk_order; int ctl_blk_order;
struct sk_buff *skb; struct sk_buff *skb;
spinlock_t skb_lock;
void *bd_cpu_addr; void *bd_cpu_addr;
dma_addr_t bd_phy_addr; dma_addr_t bd_phy_addr;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment