diff options
Diffstat (limited to 'drivers/net/wireless/mediatek/mt7601u/mcu.c')
| -rw-r--r-- | drivers/net/wireless/mediatek/mt7601u/mcu.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/net/wireless/mediatek/mt7601u/mcu.c b/drivers/net/wireless/mediatek/mt7601u/mcu.c index 65a8004418ea..1b5cc271a9e1 100644 --- a/drivers/net/wireless/mediatek/mt7601u/mcu.c +++ b/drivers/net/wireless/mediatek/mt7601u/mcu.c @@ -1,16 +1,8 @@ +// SPDX-License-Identifier: GPL-2.0-only /* * (c) Copyright 2002-2010, Ralink Technology, Inc. * Copyright (C) 2014 Felix Fietkau <nbd@openwrt.org> * Copyright (C) 2015 Jakub Kicinski <kubakici@wp.pl> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 - * as published by the Free Software Foundation - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. */ #include <linux/kernel.h> @@ -58,8 +50,7 @@ static inline void trace_mt_mcu_msg_send_cs(struct mt7601u_dev *dev, trace_mt_mcu_msg_send(dev, skb, csum, need_resp); } -static struct sk_buff * -mt7601u_mcu_msg_alloc(struct mt7601u_dev *dev, const void *data, int len) +static struct sk_buff *mt7601u_mcu_msg_alloc(const void *data, int len) { struct sk_buff *skb; @@ -125,8 +116,10 @@ mt7601u_mcu_msg_send(struct mt7601u_dev *dev, struct sk_buff *skb, int sent, ret; u8 seq = 0; - if (test_bit(MT7601U_STATE_REMOVED, &dev->state)) + if (test_bit(MT7601U_STATE_REMOVED, &dev->state)) { + consume_skb(skb); return 0; + } mutex_lock(&dev->mcu.mutex); @@ -171,7 +164,7 @@ static int mt7601u_mcu_function_select(struct mt7601u_dev *dev, .value = cpu_to_le32(val), }; - skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg)); + skb = mt7601u_mcu_msg_alloc(&msg, sizeof(msg)); if (!skb) return -ENOMEM; return mt7601u_mcu_msg_send(dev, skb, CMD_FUN_SET_OP, func == 5); @@ -208,7 +201,7 @@ mt7601u_mcu_calibrate(struct mt7601u_dev *dev, enum mcu_calibrate cal, u32 val) .value = cpu_to_le32(val), }; - skb = mt7601u_mcu_msg_alloc(dev, &msg, sizeof(msg)); + skb = mt7601u_mcu_msg_alloc(&msg, sizeof(msg)); if (!skb) return -ENOMEM; return mt7601u_mcu_msg_send(dev, skb, CMD_CALIBRATION_OP, true); @@ -421,7 +414,7 @@ static int mt7601u_load_firmware(struct mt7601u_dev *dev) MT_USB_DMA_CFG_TX_BULK_EN)); if (firmware_running(dev)) - return 0; + return firmware_request_cache(dev->dev, MT7601U_FIRMWARE); ret = request_firmware(&fw, MT7601U_FIRMWARE, dev->dev); if (ret) |
