From 0c9ff4710779318a5ba8c29faa1af01c89ae061e Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Thu, 3 Mar 2016 20:13:19 +0100 Subject: [PATCH] mt7603: purge MCU response queue on exit Signed-off-by: Felix Fietkau --- mt7603.h | 2 +- mt7603_mcu.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mt7603.h b/mt7603.h index 4c3a8563..bea4a47b 100644 --- a/mt7603.h +++ b/mt7603.h @@ -223,7 +223,7 @@ void mt7603_mac_watchdog_reset(struct mt7603_dev *dev); int mt7603_mcu_set_channel(struct mt7603_dev *dev); int mt7603_mcu_reg_read(struct mt7603_dev *dev, u32 reg, u32 *val, bool rf); int mt7603_mcu_set_eeprom(struct mt7603_dev *dev); -int mt7603_mcu_exit(struct mt7603_dev *dev); +void mt7603_mcu_exit(struct mt7603_dev *dev); void mt7603_wtbl_init(struct mt7603_dev *dev, int idx, const u8 *addr); void mt7603_wtbl_clear(struct mt7603_dev *dev, int idx); diff --git a/mt7603_mcu.c b/mt7603_mcu.c index d6895435..fe12495c 100644 --- a/mt7603_mcu.c +++ b/mt7603_mcu.c @@ -305,9 +305,14 @@ int mt7603_mcu_init(struct mt7603_dev *dev) return mt7603_load_firmware(dev); } -int mt7603_mcu_exit(struct mt7603_dev *dev) +void mt7603_mcu_exit(struct mt7603_dev *dev) { - return mt7603_mcu_restart(dev); + struct sk_buff *skb; + + mt7603_mcu_restart(dev); + + while ((skb = skb_dequeue(&dev->mcu.res_q)) != NULL) + dev_kfree_skb(skb); } int mt7603_mcu_set_eeprom(struct mt7603_dev *dev)