mac80211: rt2x00: import upstream changes and rebase our patches
[openwrt/staging/lynxis/omap.git] / package / kernel / mac80211 / patches / 020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
diff --git a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch b/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
new file mode 100644 (file)
index 0000000..7e829fa
--- /dev/null
@@ -0,0 +1,85 @@
+From 6232c17438ed01f43665197db5a98a4a4f77ef47 Mon Sep 17 00:00:00 2001
+From: Stanislaw Gruszka <sgruszka@redhat.com>
+Date: Thu, 2 Feb 2017 10:57:40 +0100
+Subject: [PATCH 01/19] 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: 8b4c0009313f ("rt2x00usb: Use usb anchor to manage URB")
+Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 23 ++++++++---------------
+ drivers/net/wireless/ralink/rt2x00/rt2x00usb.c |  5 +++++
+ 2 files changed, 13 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+index 8fcbc8dc94c1..4b08007f93f7 100644
+--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
+@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
+       cancel_work_sync(&rt2x00dev->intf_work);
+       cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
+       cancel_work_sync(&rt2x00dev->sleep_work);
+-#if IS_ENABLED(CPTCFG_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.
+@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
+        */
+       rt2x00lib_uninitialize(rt2x00dev);
++      if (rt2x00dev->workqueue)
++              destroy_workqueue(rt2x00dev->workqueue);
++
++      /*
++       * Free the tx status fifo.
++       */
++      kfifo_free(&rt2x00dev->txstatus_fifo);
++
+       /*
+        * Free extra components
+        */
+diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
+index 838ca58d2dd6..5a2bf9f63cd7 100644
+--- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
+@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev)
+ {
+       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)
+               rt2x00usb_free_entries(queue);
+ }
+-- 
+2.12.1
+