Skip to content

Commit 92a8c29

Browse files
committed
Merge tag 'wireless-drivers-for-davem-2019-02-18' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
Kalle Valo says: ==================== wireless-drivers fixes for 5.0 Hopefully the last set of fixes for 5.0, only fix this time. mt76 * fix regression with resume on mt76x0u USB devices ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 8a7493e + d04ca38 commit 92a8c29

File tree

1 file changed

+29
-17
lines changed
  • drivers/net/wireless/mediatek/mt76/mt76x0

1 file changed

+29
-17
lines changed

drivers/net/wireless/mediatek/mt76/mt76x0/usb.c

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -158,39 +158,49 @@ static const struct ieee80211_ops mt76x0u_ops = {
158158
.get_txpower = mt76x02_get_txpower,
159159
};
160160

161-
static int mt76x0u_register_device(struct mt76x02_dev *dev)
161+
static int mt76x0u_init_hardware(struct mt76x02_dev *dev)
162162
{
163-
struct ieee80211_hw *hw = dev->mt76.hw;
164163
int err;
165164

166-
err = mt76u_alloc_queues(&dev->mt76);
167-
if (err < 0)
168-
goto out_err;
169-
170-
err = mt76u_mcu_init_rx(&dev->mt76);
171-
if (err < 0)
172-
goto out_err;
173-
174165
mt76x0_chip_onoff(dev, true, true);
175-
if (!mt76x02_wait_for_mac(&dev->mt76)) {
176-
err = -ETIMEDOUT;
177-
goto out_err;
178-
}
166+
167+
if (!mt76x02_wait_for_mac(&dev->mt76))
168+
return -ETIMEDOUT;
179169

180170
err = mt76x0u_mcu_init(dev);
181171
if (err < 0)
182-
goto out_err;
172+
return err;
183173

184174
mt76x0_init_usb_dma(dev);
185175
err = mt76x0_init_hardware(dev);
186176
if (err < 0)
187-
goto out_err;
177+
return err;
188178

189179
mt76_rmw(dev, MT_US_CYC_CFG, MT_US_CYC_CNT, 0x1e);
190180
mt76_wr(dev, MT_TXOP_CTRL_CFG,
191181
FIELD_PREP(MT_TXOP_TRUN_EN, 0x3f) |
192182
FIELD_PREP(MT_TXOP_EXT_CCA_DLY, 0x58));
193183

184+
return 0;
185+
}
186+
187+
static int mt76x0u_register_device(struct mt76x02_dev *dev)
188+
{
189+
struct ieee80211_hw *hw = dev->mt76.hw;
190+
int err;
191+
192+
err = mt76u_alloc_queues(&dev->mt76);
193+
if (err < 0)
194+
goto out_err;
195+
196+
err = mt76u_mcu_init_rx(&dev->mt76);
197+
if (err < 0)
198+
goto out_err;
199+
200+
err = mt76x0u_init_hardware(dev);
201+
if (err < 0)
202+
goto out_err;
203+
194204
err = mt76x0_register_device(dev);
195205
if (err < 0)
196206
goto out_err;
@@ -301,6 +311,8 @@ static int __maybe_unused mt76x0_suspend(struct usb_interface *usb_intf,
301311

302312
mt76u_stop_queues(&dev->mt76);
303313
mt76x0u_mac_stop(dev);
314+
clear_bit(MT76_STATE_MCU_RUNNING, &dev->mt76.state);
315+
mt76x0_chip_onoff(dev, false, false);
304316
usb_kill_urb(usb->mcu.res.urb);
305317

306318
return 0;
@@ -328,7 +340,7 @@ static int __maybe_unused mt76x0_resume(struct usb_interface *usb_intf)
328340
tasklet_enable(&usb->rx_tasklet);
329341
tasklet_enable(&usb->tx_tasklet);
330342

331-
ret = mt76x0_init_hardware(dev);
343+
ret = mt76x0u_init_hardware(dev);
332344
if (ret)
333345
goto err;
334346

0 commit comments

Comments
 (0)