Commit a86f1d01 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

mt76: move mt76 workqueue in common code



Move mt76 workqueue from usb to common code in order to be reused adding
low-power support for mt7663 chipset

Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 757b0e7f
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -437,6 +437,12 @@ mt76_alloc_device(struct device *pdev, unsigned int size,

	tasklet_init(&dev->tx_tasklet, mt76_tx_tasklet, (unsigned long)dev);

	dev->wq = alloc_ordered_workqueue("mt76", 0);
	if (!dev->wq) {
		ieee80211_free_hw(hw);
		return NULL;
	}

	return dev;
}
EXPORT_SYMBOL_GPL(mt76_alloc_device);
@@ -490,6 +496,11 @@ EXPORT_SYMBOL_GPL(mt76_unregister_device);

void mt76_free_device(struct mt76_dev *dev)
{
	if (dev->wq) {
		destroy_workqueue(dev->wq);
		dev->wq = NULL;
	}
	if (mt76_is_mmio(dev))
		mt76_tx_free(dev);
	ieee80211_free_hw(dev->hw);
}
+2 −2
Original line number Diff line number Diff line
@@ -423,7 +423,6 @@ struct mt76_usb {
	u16 data_len;

	struct tasklet_struct rx_tasklet;
	struct workqueue_struct *wq;
	struct work_struct stat_work;

	u8 out_ep[__MT_EP_OUT_MAX];
@@ -621,6 +620,8 @@ struct mt76_dev {
	struct mt76_testmode_data test;
#endif

	struct workqueue_struct *wq;

	union {
		struct mt76_mmio mmio;
		struct mt76_usb usb;
@@ -1018,7 +1019,6 @@ int mt76u_vendor_request(struct mt76_dev *dev, u8 req,
			 void *buf, size_t len);
void mt76u_single_wr(struct mt76_dev *dev, const u8 req,
		     const u16 offset, const u32 val);
void mt76u_deinit(struct mt76_dev *dev);
int mt76u_init(struct mt76_dev *dev, struct usb_interface *intf,
	       bool ext);
int mt76u_alloc_mcu_queue(struct mt76_dev *dev);
+1 −1
Original line number Diff line number Diff line
@@ -927,7 +927,7 @@ mt7615_mac_queue_rate_update(struct mt7615_phy *phy, struct mt7615_sta *sta,
	mt7615_mac_update_rate_desc(phy, sta, probe_rate, rates,
				    &wd->rate);
	list_add_tail(&wd->node, &dev->wd_head);
	queue_work(dev->mt76.usb.wq, &dev->wtbl_work);
	queue_work(dev->mt76.wq, &dev->wtbl_work);

	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -319,7 +319,7 @@ mt7615_queue_key_update(struct mt7615_dev *dev, enum set_key_cmd cmd,
	wd->key.cmd = cmd;

	list_add_tail(&wd->node, &dev->wd_head);
	queue_work(dev->mt76.usb.wq, &dev->wtbl_work);
	queue_work(dev->mt76.wq, &dev->wtbl_work);

	return 0;
}
+2 −4
Original line number Diff line number Diff line
@@ -349,11 +349,10 @@ static int mt7663u_probe(struct usb_interface *usb_intf,
error_freeq:
	mt76u_queues_deinit(&dev->mt76);
error:
	mt76u_deinit(&dev->mt76);
	usb_set_intfdata(usb_intf, NULL);
	usb_put_dev(interface_to_usbdev(usb_intf));

	ieee80211_free_hw(mdev->hw);
	mt76_free_device(&dev->mt76);

	return ret;
}
@@ -371,8 +370,7 @@ static void mt7663u_disconnect(struct usb_interface *usb_intf)
	usb_set_intfdata(usb_intf, NULL);
	usb_put_dev(interface_to_usbdev(usb_intf));

	mt76u_deinit(&dev->mt76);
	ieee80211_free_hw(dev->mt76.hw);
	mt76_free_device(&dev->mt76);
}

#ifdef CONFIG_PM
Loading