diff options
author | dragonn | 2021-09-18 10:01:44 +0200 |
---|---|---|
committer | dragonn | 2021-09-18 10:01:44 +0200 |
commit | 825d71ed713c470164cb24131dd6af6fcb19664e (patch) | |
tree | 2422ae50eb0bf5fec3e80d533425293bf1a57730 /sys-kernel_arch-sources-g14_files-8020-mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch | |
parent | 8f5e12722e0aa4ead0854037a38ff6dbb1981a6b (diff) | |
download | aur-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.patch | 41 |
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 + |