linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] mt76: fix tx status timeout processing
@ 2019-02-18 19:42 Felix Fietkau
  2019-02-18 19:42 ` [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN Felix Fietkau
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Felix Fietkau @ 2019-02-18 19:42 UTC (permalink / raw)
  To: linux-wireless

Remove bogus check for MT_PACKET_ID_NO_ACK in mt76_tx_status_skb_get, which
is already handled in callers and turns timeout calls into no-ops
Do not clean up pending status items on reordering of tx status information
if the timeout is not reached yet

Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/wireless/mediatek/mt76/tx.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/tx.c b/drivers/net/wireless/mediatek/mt76/tx.c
index ef38e8626da9..5a349fe3e576 100644
--- a/drivers/net/wireless/mediatek/mt76/tx.c
+++ b/drivers/net/wireless/mediatek/mt76/tx.c
@@ -205,9 +205,6 @@ mt76_tx_status_skb_get(struct mt76_dev *dev, struct mt76_wcid *wcid, int pktid,
 {
 	struct sk_buff *skb, *tmp;
 
-	if (pktid == MT_PACKET_ID_NO_ACK)
-		return NULL;
-
 	skb_queue_walk_safe(&dev->status_list, skb, tmp) {
 		struct mt76_tx_cb *cb = mt76_tx_skb_cb(skb);
 
@@ -217,7 +214,7 @@ mt76_tx_status_skb_get(struct mt76_dev *dev, struct mt76_wcid *wcid, int pktid,
 		if (cb->pktid == pktid)
 			return skb;
 
-		if (!pktid &&
+		if (pktid >= 0 &&
 		    !time_after(jiffies, cb->jiffies + MT_TX_STATUS_SKB_TIMEOUT))
 			continue;
 
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN
  2019-02-18 19:42 [PATCH 1/4] mt76: fix tx status timeout processing Felix Fietkau
@ 2019-02-18 19:42 ` Felix Fietkau
  2019-02-22 15:24   ` Sasha Levin
  2019-02-18 19:42 ` [PATCH 3/4] mt76: fix resetting software IV flag on key delete Felix Fietkau
  2019-02-18 19:42 ` [PATCH 4/4] mt76: mt76x2: simplify per-chain signal strength handling Felix Fietkau
  2 siblings, 1 reply; 5+ messages in thread
From: Felix Fietkau @ 2019-02-18 19:42 UTC (permalink / raw)
  To: linux-wireless; +Cc: stable

Since ccmp_pn is u8 *, the second half needs to start at array index 4
instead of 0. Fixes a connection stall after a certain amount of traffic

Fixes: 23405236460b9 ("mt76: fix transmission of encrypted management frames")
Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
index bf39624c9b98..eab713723b7e 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
@@ -314,7 +314,7 @@ void mt76x02_mac_write_txwi(struct mt76x02_dev *dev, struct mt76x02_txwi *txwi,
 		ccmp_pn[6] = pn >> 32;
 		ccmp_pn[7] = pn >> 40;
 		txwi->iv = *((__le32 *)&ccmp_pn[0]);
-		txwi->eiv = *((__le32 *)&ccmp_pn[1]);
+		txwi->eiv = *((__le32 *)&ccmp_pn[4]);
 	}
 
 	spin_lock_bh(&dev->mt76.lock);
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/4] mt76: fix resetting software IV flag on key delete
  2019-02-18 19:42 [PATCH 1/4] mt76: fix tx status timeout processing Felix Fietkau
  2019-02-18 19:42 ` [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN Felix Fietkau
@ 2019-02-18 19:42 ` Felix Fietkau
  2019-02-18 19:42 ` [PATCH 4/4] mt76: mt76x2: simplify per-chain signal strength handling Felix Fietkau
  2 siblings, 0 replies; 5+ messages in thread
From: Felix Fietkau @ 2019-02-18 19:42 UTC (permalink / raw)
  To: linux-wireless

It needs to be unset instead of set

Fixes: 23405236460b9 ("mt76: fix transmission of encrypted management frames")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/wireless/mediatek/mt76/mt76x02_util.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
index 87ed00768bc7..11b5f664f5b1 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_util.c
@@ -431,7 +431,7 @@ int mt76x02_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
 	} else {
 		if (idx == wcid->hw_key_idx) {
 			wcid->hw_key_idx = -1;
-			wcid->sw_iv = true;
+			wcid->sw_iv = false;
 		}
 
 		key = NULL;
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 4/4] mt76: mt76x2: simplify per-chain signal strength handling
  2019-02-18 19:42 [PATCH 1/4] mt76: fix tx status timeout processing Felix Fietkau
  2019-02-18 19:42 ` [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN Felix Fietkau
  2019-02-18 19:42 ` [PATCH 3/4] mt76: fix resetting software IV flag on key delete Felix Fietkau
@ 2019-02-18 19:42 ` Felix Fietkau
  2 siblings, 0 replies; 5+ messages in thread
From: Felix Fietkau @ 2019-02-18 19:42 UTC (permalink / raw)
  To: linux-wireless

There is no need to use a for loop here, supported chips can only support
up to 2 chains.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
 drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
index eab713723b7e..be2979f34f31 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
@@ -608,7 +608,7 @@ int mt76x02_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
 	u16 rate = le16_to_cpu(rxwi->rate);
 	u16 tid_sn = le16_to_cpu(rxwi->tid_sn);
 	bool unicast = rxwi->rxinfo & cpu_to_le32(MT_RXINFO_UNICAST);
-	int i, pad_len = 0, nstreams = dev->mt76.chainmask & 0xf;
+	int pad_len = 0, nstreams = dev->mt76.chainmask & 0xf;
 	s8 signal;
 	u8 pn_len;
 	u8 wcid;
@@ -668,12 +668,13 @@ int mt76x02_mac_process_rx(struct mt76x02_dev *dev, struct sk_buff *skb,
 
 	status->chains = BIT(0);
 	signal = mt76x02_mac_get_rssi(dev, rxwi->rssi[0], 0);
-	for (i = 0; i < nstreams; i++) {
-		status->chains |= BIT(i);
-		status->chain_signal[i] = mt76x02_mac_get_rssi(dev,
-							       rxwi->rssi[i],
-							       i);
-		signal = max_t(s8, signal, status->chain_signal[i]);
+	status->chain_signal[0] = signal;
+	if (nstreams > 1) {
+		status->chains |= BIT(1);
+		status->chain_signal[1] = mt76x02_mac_get_rssi(dev,
+							       rxwi->rssi[1],
+							       1);
+		signal = max_t(s8, signal, status->chain_signal[1]);
 	}
 	status->signal = signal;
 	status->freq = dev->mt76.chandef.chan->center_freq;
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN
  2019-02-18 19:42 ` [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN Felix Fietkau
@ 2019-02-22 15:24   ` Sasha Levin
  0 siblings, 0 replies; 5+ messages in thread
From: Sasha Levin @ 2019-02-22 15:24 UTC (permalink / raw)
  To: Sasha Levin, Felix Fietkau, linux-wireless; +Cc: stable, stable, stable

Hi,

[This is an automated email]

This commit has been processed because it contains a "Fixes:" tag,
fixing commit: 23405236460b mt76: fix transmission of encrypted management frames.

The bot has tested the following trees: v4.20.11, v4.19.24.

v4.19.24: Failed to apply! Possible dependencies:
    047aed1c38cf ("mt76: unify mac_shared_key_setup")
    108a4861ef19 ("mt76: create new mt76x02-lib module for common mt76x{0,2} code")
    2735a6dd7df3 ("mt76: unify wait_for_mac")
    32bb405fe2bc ("mt76: unify mac_wcid_setup")
    427f9ebec682 ("mt76: move mt76x02_mac_write_txwi in mt76x02-lib module")
    46436b5ef9dd ("mt76: unify mac_wcid_set_key")
    516ea2a2a9d4 ("mt76: use mac_wcid_set_drop in mt76x0")
    797ea2407825 ("mt76: merge mt76x0/regs.h into mt76x02_regs.h")
    c378f2473466 ("mt76: unify mac_get_key_info")
    f5a7f126e5fe ("mt76: unify sta structure part 1")


How should we proceed with this patch?

--
Thanks,
Sasha

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-02-22 15:24 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-18 19:42 [PATCH 1/4] mt76: fix tx status timeout processing Felix Fietkau
2019-02-18 19:42 ` [PATCH 2/4] mt76: fix corrupted software generated tx CCMP PN Felix Fietkau
2019-02-22 15:24   ` Sasha Levin
2019-02-18 19:42 ` [PATCH 3/4] mt76: fix resetting software IV flag on key delete Felix Fietkau
2019-02-18 19:42 ` [PATCH 4/4] mt76: mt76x2: simplify per-chain signal strength handling Felix Fietkau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).