diff mbox series

mt76: fix fix ampdu locking

Message ID 20191120200531.11344-1-markus.theil@tu-ilmenau.de (mailing list archive)
State Accepted
Commit 05d6c8cfdbd6cefac6b373bad72775fcc4193c80
Delegated to: Kalle Valo
Headers show
Series mt76: fix fix ampdu locking | expand

Commit Message

Markus Theil Nov. 20, 2019, 8:05 p.m. UTC
The current ampdu locking code does not unlock its mutex in the early
return case. This patch fixes it.

Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
---
 drivers/net/wireless/mediatek/mt76/mt7603/main.c  | 6 ++++--
 drivers/net/wireless/mediatek/mt76/mt7615/main.c  | 6 ++++--
 drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 6 ++++--
 3 files changed, 12 insertions(+), 6 deletions(-)

Comments

Felix Fietkau Nov. 20, 2019, 8:14 p.m. UTC | #1
On 2019-11-20 21:05, Markus Theil wrote:
> The current ampdu locking code does not unlock its mutex in the early
> return case. This patch fixes it.
> 
> Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
Acked-by: Felix Fietkau <nbd@nbd.name>

Kalle, I think this should go on top of my pull request quickly, since
it fixes a regression in a commit from that pull request (introduced via
rebase on top of Johannes' last change of that code).
Do you want me to send another pull request with just this patch, or can
you take it directly? In the latter case, feel free to also remove one
of the two "fix" words in the subject :)

Thanks,

- Felix
Markus Theil Nov. 20, 2019, 8:32 p.m. UTC | #2
On 11/20/19 9:14 PM, Felix Fietkau wrote:
> On 2019-11-20 21:05, Markus Theil wrote:
>> The current ampdu locking code does not unlock its mutex in the early
>> return case. This patch fixes it.
>>
>> Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
> Acked-by: Felix Fietkau <nbd@nbd.name>
>
> Kalle, I think this should go on top of my pull request quickly, since
> it fixes a regression in a commit from that pull request (introduced via
> rebase on top of Johannes' last change of that code).
> Do you want me to send another pull request with just this patch, or can
> you take it directly? In the latter case, feel free to also remove one
> of the two "fix" words in the subject :)
Sry, ;)
>
> Thanks,
>
> - Felix
Kalle Valo Nov. 21, 2019, 6:53 a.m. UTC | #3
Felix Fietkau <nbd@nbd.name> writes:

> On 2019-11-20 21:05, Markus Theil wrote:
>> The current ampdu locking code does not unlock its mutex in the early
>> return case. This patch fixes it.
>> 
>> Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
>
> Acked-by: Felix Fietkau <nbd@nbd.name>
>
> Kalle, I think this should go on top of my pull request quickly, since
> it fixes a regression in a commit from that pull request (introduced via
> rebase on top of Johannes' last change of that code).
> Do you want me to send another pull request with just this patch, or can
> you take it directly?

A lot easier to take it directly, so let's do that. I now assigned this
patch to me on patchwork and I'll try to remember apply it later today.

> In the latter case, feel free to also remove one of the two "fix"
> words in the subject :)

Ok, will fix (no pun intended ;)
Kalle Valo Nov. 21, 2019, 6:34 p.m. UTC | #4
Markus Theil <markus.theil@tu-ilmenau.de> wrote:

> The current ampdu locking code does not unlock its mutex in the early
> return case. This patch fixes it.
> 
> Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
> Acked-by: Felix Fietkau <nbd@nbd.name>

Patch applied to wireless-drivers-next.git, thanks.

3e870c205d66 mt76: fix ampdu locking
Kalle Valo Nov. 21, 2019, 6:36 p.m. UTC | #5
Kalle Valo <kvalo@codeaurora.org> writes:

> Markus Theil <markus.theil@tu-ilmenau.de> wrote:
>
>> The current ampdu locking code does not unlock its mutex in the early
>> return case. This patch fixes it.
>> 
>> Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
>> Acked-by: Felix Fietkau <nbd@nbd.name>
>
> Patch applied to wireless-drivers-next.git, thanks.
>
> 3e870c205d66 mt76: fix ampdu locking

I made a mistake, please ignore that commit id. There will be a new id soon.
Kalle Valo Nov. 21, 2019, 6:43 p.m. UTC | #6
Markus Theil <markus.theil@tu-ilmenau.de> wrote:

> The current ampdu locking code does not unlock its mutex in the early
> return case. This patch fixes it.
> 
> Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
> Acked-by: Felix Fietkau <nbd@nbd.name>

Patch applied to wireless-drivers-next.git, thanks.

05d6c8cfdbd6 mt76: fix fix ampdu locking
diff mbox series

Patch

diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/main.c b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
index 281387c3f4f4..962e2822d19f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/main.c
@@ -569,6 +569,7 @@  mt7603_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	u16 ssn = params->ssn;
 	u8 ba_size = params->buf_size;
 	struct mt76_txq *mtxq;
+	int ret = 0;
 
 	if (!txq)
 		return -EINVAL;
@@ -597,7 +598,8 @@  mt7603_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 		break;
 	case IEEE80211_AMPDU_TX_START:
 		mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn);
-		return IEEE80211_AMPDU_TX_START_IMMEDIATE;
+		ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;
+		break;
 	case IEEE80211_AMPDU_TX_STOP_CONT:
 		mtxq->aggr = false;
 		mt7603_mac_tx_ba_reset(dev, msta->wcid.idx, tid, -1);
@@ -606,7 +608,7 @@  mt7603_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	}
 	mutex_unlock(&dev->mt76.mutex);
 
-	return 0;
+	return ret;
 }
 
 static void
diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/main.c b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
index 240dab919327..070b03403894 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7615/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7615/main.c
@@ -484,6 +484,7 @@  mt7615_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	u16 tid = params->tid;
 	u16 ssn = params->ssn;
 	struct mt76_txq *mtxq;
+	int ret = 0;
 
 	if (!txq)
 		return -EINVAL;
@@ -513,7 +514,8 @@  mt7615_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 		break;
 	case IEEE80211_AMPDU_TX_START:
 		mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn);
-		return IEEE80211_AMPDU_TX_START_IMMEDIATE;
+		ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;
+		break;
 	case IEEE80211_AMPDU_TX_STOP_CONT:
 		mtxq->aggr = false;
 		mt7615_mcu_set_tx_ba(dev, params, 0);
@@ -522,7 +524,7 @@  mt7615_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	}
 	mutex_unlock(&dev->mt76.mutex);
 
-	return 0;
+	return ret;
 }
 
 const struct ieee80211_ops mt7615_ops = {
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index f58a3ebfa9d2..dac383ee8f4f 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -356,6 +356,7 @@  int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	u16 tid = params->tid;
 	u16 ssn = params->ssn;
 	struct mt76_txq *mtxq;
+	int ret = 0;
 
 	if (!txq)
 		return -EINVAL;
@@ -385,7 +386,8 @@  int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 		break;
 	case IEEE80211_AMPDU_TX_START:
 		mtxq->agg_ssn = IEEE80211_SN_TO_SEQ(ssn);
-		return IEEE80211_AMPDU_TX_START_IMMEDIATE;
+		ret = IEEE80211_AMPDU_TX_START_IMMEDIATE;
+		break;
 	case IEEE80211_AMPDU_TX_STOP_CONT:
 		mtxq->aggr = false;
 		ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
@@ -393,7 +395,7 @@  int mt76x02_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 	}
 	mutex_unlock(&dev->mt76.mutex);
 
-	return 0;
+	return ret;
 }
 EXPORT_SYMBOL_GPL(mt76x02_ampdu_action);