Skip to contentSkip to conversation

mac80211: cancel restart_work explicitly instead of depending on flush_scheduled_work()

PATCH In review Tejun Heo 4 participants 8 messages Oct 15, 2010 mac80211

lore
Share & tools
lore

Tejun Heo

author
#0 lore raw

PATCH 1/1 mac80211: cancel restart_work explicitly instead of depending on flush_scheduled_work()

iee80211_hw->restart_work is the only work which uses the system workqueue. Instead of calling flush_scheduled_work() during iee80211_exit(), cancel the work during unregistration.

This is to prepare for the deprecation and removal of flush_scheduled_work().

---
 net/mac80211/main.c |    9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)
net/mac80211/main.c +2 -7
Index: work/net/mac80211/main.c
===================================================================
@@ -606,7 +606,7 @@ int ieee80211_register_hw(struct ieee802
 		hw->queues = IEEE80211_MAX_QUEUES;
 
 	local->workqueue =
-		create_singlethread_workqueue(wiphy_name(local->hw.wiphy));
+		alloc_ordered_workqueue(wiphy_name(local->hw.wiphy), 0);
 	if (!local->workqueue) {
 		result = -ENOMEM;
 		goto fail_workqueue;
@@ -739,6 +739,7 @@ void ieee80211_unregister_hw(struct ieee
 	del_timer_sync(&local->work_timer);
 
 	cancel_work_sync(&local->reconfig_filter);
+	cancel_work_sync(&local->restart_work);
 
 	ieee80211_clear_tx_pending(local);
 	sta_info_stop(local);
@@ -812,12 +813,6 @@ static void __exit ieee80211_exit(void)
 	rc80211_minstrel_ht_exit();
 	rc80211_minstrel_exit();
 
-	/*
-	 * For key todo, it'll be empty by now but the work
-	 * might still be scheduled.
-	 */
-	flush_scheduled_work();
-
 	if (mesh_allocated)
 		ieee80211s_stop();
 
maintainer
#1 lore raw
Quoted 2 lines

-        create_singlethread_workqueue(wiphy_name(local->hw.wiphy)); +        alloc_ordered_workqueue(wiphy_name(local->hw.wiphy), 0);

no description for this change?

Quoted 5 lines

-    /*

-     * For key todo, it'll be empty by now but the work
-     * might still be scheduled.
-     */

-    flush_scheduled_work();

oops, todo work no longer exists...

Anyway, ACK.

Johannes
(sent on my cell phone)

author
#2 lore raw

Hello,

Quoted 4 lines · Johannes Berg

net/mac80211/main.c int ieee80211_register_hw(struct ieee802 · line 609

Quoted 2 lines
net/mac80211/main.c +1 -1
-        create_singlethread_workqueue(wiphy_name(local->hw.wiphy));
+        alloc_ordered_workqueue(wiphy_name(local->hw.wiphy), 0);

no description for this change?

Oops, right. create_*workqueue() interfaces are being replaced by alloc_*workqueue(). It's part of the workqueue interface update.

Quoted 9 lines

net/mac80211/main.c static void __exit ieee80211_exit(void) · line 819

Quoted 5 lines
net/mac80211/main.c +0 -5
-    /*
-     * For key todo, it'll be empty by now but the work
-     * might still be scheduled.
-     */
-    flush_scheduled_work();

oops, todo work no longer exists...

Anyway, ACK.

Are you going to route this through wireless tree? Shall I repost with update patch description?

Thank you.

Signature · 1 line
tejun
#3 lore raw
Quoted 8 lines · On Friday 15 October 2010 18:39:37 Tejun Heo wrote:

Hello,

Quoted 6 lines
Quoted 5 lines
net/mac80211/main.c +0 -5
-    /*
-     * For key todo, it'll be empty by now but the work
-     * might still be scheduled.
-     */
-    flush_scheduled_work();
Quoted 6 lines
Quoted 3 lines

oops, todo work no longer exists...

Anyway, ACK.

Are you going to route this through wireless tree? Shall I repost with update patch description?

wireless-testing/wireless-next has already such a patch:
"mac80211: cancel restart_work in ieee80211_unregister_hw" (2010-08-25)

<http://git.kernel.org/?p=linux/kernel/git/linville/wireless-next-2.6.git;a=commit;h=258086a48b766d12a500f98834654ffa927ca475>

John, can you please push to 2.6.36-rc8?
(I know, I am _late_, but I didn't know about any potential problem in the mainline?)

Best regards,
Chr

#4 lore raw
Quoted 16 lines · Christian Lamparter
Quoted 8 lines · On Friday 15 October 2010 18:39:37 Tejun Heo wrote:

Hello,

Quoted 6 lines
Quoted 5 lines
net/mac80211/main.c +0 -5
-    /*
-     * For key todo, it'll be empty by now but the work
-     * might still be scheduled.
-     */
-    flush_scheduled_work();
Quoted 6 lines
Quoted 3 lines

oops, todo work no longer exists...

Anyway, ACK.

Are you going to route this through wireless tree? Shall I repost with update patch description?

Quoted 8 lines

wireless-testing/wireless-next has already such a patch:
"mac80211: cancel restart_work in ieee80211_unregister_hw" (2010-08-25)

<http://git.kernel.org/?p=linux/kernel/git/linville/wireless-next-2.6.git;a=commit;h=258086a48b766d12a500f98834654ffa927ca475>

John, can you please push to 2.6.36-rc8?
(I know, I am _late_, but I didn't know about any potential problem in the mainline?)

I don't see how either patch would merit inclusion in 2.6.36 at this point.

John

Signature · 2 lines
John W. Linville		Someday the world will need a hero, and you
[email protected]			might be all we have.  Be ready.
author
#5 lore raw

Hello,

Quoted 10 lines · John W. Linville
Quoted 8 lines

wireless-testing/wireless-next has already such a patch:
"mac80211: cancel restart_work in ieee80211_unregister_hw" (2010-08-25)

<http://git.kernel.org/?p=linux/kernel/git/linville/wireless-next-2.6.git;a=commit;h=258086a48b766d12a500f98834654ffa927ca475>

John, can you please push to 2.6.36-rc8?
(I know, I am _late_, but I didn't know about any potential problem in the mainline?)

I don't see how either patch would merit inclusion in 2.6.36 at this point.

My patch definitely was aimed for 2.6.37-rc1 or later. I'm not sure whether the cancel_work_sync() is a bug fix or not but if it hasn't actually triggered yet, I guess leaving it as-is isn't too bad at this point.

Thanks.

Signature · 1 line
tejun
#6 lore raw
Quoted 8 lines · On Friday 15 October 2010 21:33:20 Tejun Heo wrote:

Hello,

Quoted 5 lines · John W. Linville
Quoted 5 lines

wireless-testing/wireless-next has already such a patch:
"mac80211: cancel restart_work in ieee80211_unregister_hw" (2010-08-25)

<http://git.kernel.org/?p=linux/kernel/git/linville/wireless-next-2.6.git;a=commit;h=258086a48b766d12a500f98834654ffa927ca475>

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

John, can you please push to 2.6.36-rc8?
(I know, I am _late_, but I didn't know about any potential problem in the mainline?)

I don't see how either patch would merit inclusion in 2.6.36 at this point.

My patch definitely was aimed for 2.6.37-rc1 or later.

Oh, so the "[PATCH v2.6.36-rc7]" in the patch subject was just "misleading" me. no-one could have known that there would be a 2.6.36-rc8 release.

John, please ignore my previous request of pushing the patch into 2.6.36 ;).

Regards,
Chr

author
#7 lore raw

Hello,

Quoted 1 line · Christian Lamparter

Oh, so the "[PATCH v2.6.36-rc7]" in the patch subject was just "misleading" me.

Ah, sorry about that. I usually tag them with the version tag the patch was generated against, not the target version. Now that I think about it, it could definitely be confusing. I'll try to be clearer.

Thanks.

Signature · 1 line
tejun