rt2x00: avoid introducing a USB dependency in the rt2x00lib module
As reported by Felix:
Though protected by an ifdef, introducing an usb symbol dependency in
the rt2x00lib module is a major inconvenience for distributions that
package kernel modules split into individual packages.
Get rid of this unnecessary dependency by calling the usb related
function from a more suitable place.
Cc: Vishal Thanki <vishalthanki@gmail.com>
Reported-by: Felix Fietkau <nbd@nbd.name>
Fixes: 8b4c000931
("rt2x00usb: Use usb anchor to manage URB")
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
committed by
Kalle Valo
parent
0f83ff6973
commit
6232c17438
@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
|
|||||||
cancel_work_sync(&rt2x00dev->intf_work);
|
cancel_work_sync(&rt2x00dev->intf_work);
|
||||||
cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
|
cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
|
||||||
cancel_work_sync(&rt2x00dev->sleep_work);
|
cancel_work_sync(&rt2x00dev->sleep_work);
|
||||||
#if IS_ENABLED(CONFIG_RT2X00_LIB_USB)
|
|
||||||
if (rt2x00_is_usb(rt2x00dev)) {
|
|
||||||
usb_kill_anchored_urbs(rt2x00dev->anchor);
|
|
||||||
hrtimer_cancel(&rt2x00dev->txstatus_timer);
|
|
||||||
cancel_work_sync(&rt2x00dev->rxdone_work);
|
|
||||||
cancel_work_sync(&rt2x00dev->txdone_work);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (rt2x00dev->workqueue)
|
|
||||||
destroy_workqueue(rt2x00dev->workqueue);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Free the tx status fifo.
|
|
||||||
*/
|
|
||||||
kfifo_free(&rt2x00dev->txstatus_fifo);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Kill the tx status tasklet.
|
* Kill the tx status tasklet.
|
||||||
@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
|
|||||||
*/
|
*/
|
||||||
rt2x00lib_uninitialize(rt2x00dev);
|
rt2x00lib_uninitialize(rt2x00dev);
|
||||||
|
|
||||||
|
if (rt2x00dev->workqueue)
|
||||||
|
destroy_workqueue(rt2x00dev->workqueue);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Free the tx status fifo.
|
||||||
|
*/
|
||||||
|
kfifo_free(&rt2x00dev->txstatus_fifo);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free extra components
|
* Free extra components
|
||||||
*/
|
*/
|
||||||
|
@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev)
|
|||||||
{
|
{
|
||||||
struct data_queue *queue;
|
struct data_queue *queue;
|
||||||
|
|
||||||
|
usb_kill_anchored_urbs(rt2x00dev->anchor);
|
||||||
|
hrtimer_cancel(&rt2x00dev->txstatus_timer);
|
||||||
|
cancel_work_sync(&rt2x00dev->rxdone_work);
|
||||||
|
cancel_work_sync(&rt2x00dev->txdone_work);
|
||||||
|
|
||||||
queue_for_each(rt2x00dev, queue)
|
queue_for_each(rt2x00dev, queue)
|
||||||
rt2x00usb_free_entries(queue);
|
rt2x00usb_free_entries(queue);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user