summarylogtreecommitdiffstats
path: root/sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-b...
diff options
context:
space:
mode:
authordragonn2021-09-18 10:01:44 +0200
committerdragonn2021-09-18 10:01:44 +0200
commit825d71ed713c470164cb24131dd6af6fcb19664e (patch)
tree2422ae50eb0bf5fec3e80d533425293bf1a57730 /sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch
parent8f5e12722e0aa4ead0854037a38ff6dbb1981a6b (diff)
downloadaur-825d71ed713c470164cb24131dd6af6fcb19664e.tar.gz
5.14.5
Diffstat (limited to 'sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch')
-rw-r--r--sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch b/sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch
new file mode 100644
index 000000000000..e3c25ccae6f9
--- /dev/null
+++ b/sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch
@@ -0,0 +1,41 @@
+From 8c7b55f401ae8cf172fd9766178ef20cda322e42 Mon Sep 17 00:00:00 2001
+From: Deren Wu <deren.wu@mediatek.com>
+Date: Wed, 14 Jul 2021 23:50:52 +0800
+Subject: [PATCH 8013/8014] mt76: mt7921: Fix out of order process by invalid
+ event pkt
+
+The acceptable event report should inlcude original CMD-ID. Otherwise,
+drop unexpected result from fw.
+
+Fixes: 1c099ab44727c ("mt76: mt7921: add MCU support")
+Signed-off-by: Jimmy Hu <Jimmy.Hu@mediatek.com>
+Signed-off-by: Deren Wu <deren.wu@mediatek.com>
+---
+ drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
+index f7459ad2a073..bc8e3327a49f 100644
+--- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
++++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c
+@@ -157,6 +157,7 @@ mt7921_mcu_parse_response(struct mt76_dev *mdev, int cmd,
+ struct sk_buff *skb, int seq)
+ {
+ struct mt7921_mcu_rxd *rxd;
++ int mcu_cmd = cmd & MCU_CMD_MASK;
+ int ret = 0;
+
+ if (!skb) {
+@@ -194,6 +195,9 @@ mt7921_mcu_parse_response(struct mt76_dev *mdev, int cmd,
+ skb_pull(skb, sizeof(*rxd));
+ event = (struct mt7921_mcu_uni_event *)skb->data;
+ ret = le32_to_cpu(event->status);
++ /* skip invalid event */
++ if (mcu_cmd != event->cid)
++ ret = -EAGAIN;
+ break;
+ }
+ case MCU_CMD_REG_READ: {
+--
+2.32.0
+