wifi: mt76: mt7915: decrease timeout for commonly issued MCU commands
authorFelix Fietkau <nbd@nbd.name>
Mon, 30 Dec 2024 19:41:55 +0000 (20:41 +0100)
committerFelix Fietkau <nbd@nbd.name>
Tue, 14 Jan 2025 12:34:36 +0000 (13:34 +0100)
This allows faster recovery from firmware issues

Link: https://patch.msgid.link/20241230194202.95065-7-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c

index 6efa1c95e9532117e642a21c1dd62105ed7ef36c..7115394f6bd6289c3e2c3babb52a06e05757331c 100644 (file)
@@ -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);
 }