From 0d8474602a9bdc1296cd729afd58d6bdf06b281c Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 8 Oct 2024 21:53:53 +0200 Subject: [PATCH] wifi: mt76: mt7915: decrease timeout for commonly issued MCU commands This allows faster recovery from firmware issues Signed-off-by: Felix Fietkau --- mt7915/mcu.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/mt7915/mcu.c b/mt7915/mcu.c index b4760820..fee36abb 100644 --- a/mt7915/mcu.c +++ b/mt7915/mcu.c @@ -194,6 +194,25 @@ mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd, return ret; } +static void +mt7915_mcu_set_timeout(struct mt76_dev *mdev, int cmd) +{ + if ((cmd & __MCU_CMD_FIELD_ID) != MCU_CMD_EXT_CID) + return; + + switch (FIELD_GET(__MCU_CMD_FIELD_EXT_ID, cmd)) { + case MCU_EXT_CMD_THERMAL_CTRL: + case MCU_EXT_CMD_GET_MIB_INFO: + case MCU_EXT_CMD_PHY_STAT_INFO: + case MCU_EXT_CMD_STA_REC_UPDATE: + case MCU_EXT_CMD_BSS_INFO_UPDATE: + mdev->mcu.timeout = 2 * HZ; + return; + default: + break; + } +} + static int mt7915_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, int cmd, int *wait_seq) @@ -208,6 +227,8 @@ mt7915_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb, else qid = MT_MCUQ_WM; + mt7915_mcu_set_timeout(mdev, cmd); + return mt76_tx_queue_skb_raw(dev, mdev->q_mcu[qid], skb, 0); }