clean-up initialization of deferrable timer
Subsystems (10)
cover clean-up initialization of deferrable timer
This patchset introduces setup_timer_deferrable() macro. Using it makes code simple and understandable.
This patchset doesn't make any functional difference. It is just for clean-up.
It is based on v3.7-rc1
Joonsoo Kim (2):
timer: add setup_timer_deferrable() macro
timer: use new setup_timer_deferrable() macro
drivers/acpi/apei/ghes.c | 5 ++--- drivers/ata/libata-core.c | 5 ++--- drivers/net/ethernet/nvidia/forcedeth.c | 13 ++++--------- drivers/net/ethernet/qlogic/qlge/qlge_main.c | 4 +--- drivers/net/vxlan.c | 5 ++--- include/linux/timer.h | 2 ++ kernel/workqueue.c | 6 ++---- net/mac80211/agg-rx.c | 12 ++++++------ net/mac80211/agg-tx.c | 12 ++++++------ net/sched/cls_flow.c | 5 ++--- net/sched/sch_sfq.c | 5 ++--- 11 files changed, 31 insertions(+), 43 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/2 timer: add setup_timer_deferrable() macro
There are some users of deferrable timer. Because of lacking of handy initializer, they should initialize deferrable timer fumblingly. We might do better with new setup_timer_deferrable() macro. So add it.
Following patch will makes some users of init_timer_deferrable() use this handy macro.
include/linux/timer.h +2 -0
@@ -151,6 +151,8 @@ static inline void init_timer_on_stack_key(struct timer_list *timer,#define setup_timer (timer, fn, data) \ __setup_timer((timer), (fn), (data), 0) +#define setup_timer_deferrable (timer, fn, data) \ + __setup_timer((timer), (fn), (data), TIMER_DEFERRABLE)#define setup_timer_on_stack (timer, fn, data) \ __setup_timer_on_stack((timer), (fn), (data), 0)#define setup_deferrable_timer_on_stack (timer, fn, data) \
Signature · 1 line
1.7.9.5
PATCH 2/2 timer: use new setup_timer_deferrable() macro
In reply to Joonsoo KimNow, we have a handy macro for initializing deferrable timer. Using it makes code clean and easy to understand.
Additionally, in some driver codes, use setup_timer() instead of init_timer().
This patch doesn't make any functional difference.
drivers/acpi/apei/ghes.c +2 -3
@@ -944,9 +944,8 @@ static int __devinit ghes_probe(struct platform_device *ghes_dev) }switch (generic->notify.type) {case ACPI_HEST_NOTIFY_POLLED : - ghes->timer.function = ghes_poll_func; - ghes->timer.data = (unsigned long )ghes; -init_timer_deferrable (&ghes->timer); +setup_timer_deferrable (&ghes->timer, ghes_poll_func, + (unsigned long )ghes);ghes_add_timer (ghes);break ;case ACPI_HEST_NOTIFY_EXTERNAL :
drivers/ata/libata-core.c +2 -3
@@ -5616,9 +5616,8 @@ struct ata_port *ata_port_alloc(struct ata_host *host)INIT_LIST_HEAD (&ap->eh_done_q);init_waitqueue_head (&ap->eh_wait_q);init_completion (&ap->park_req_pending); -init_timer_deferrable (&ap->fastdrain_timer); - ap->fastdrain_timer.function = ata_eh_fastdrain_timerfn; - ap->fastdrain_timer.data = (unsigned long )ap; +setup_timer_deferrable (&ap->fastdrain_timer, ata_eh_fastdrain_timerfn, + (unsigned long )ap); ap->cbl =ATA_CBL_NONE ;
drivers/net/ethernet/nvidia/forcedeth.c +4 -9
@@ -5548,15 +5548,10 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_ispin_lock_init (&np->hwstats_lock);SET_NETDEV_DEV (dev, &pci_dev->dev); -init_timer (&np->oom_kick); - np->oom_kick.data = (unsigned long ) dev; - np->oom_kick.function = nv_do_rx_refill;/* timer handler */ -init_timer (&np->nic_poll); - np->nic_poll.data = (unsigned long ) dev; - np->nic_poll.function = nv_do_nic_poll;/* timer handler */ -init_timer_deferrable (&np->stats_poll); - np->stats_poll.data = (unsigned long ) dev; - np->stats_poll.function = nv_do_stats_poll;/* timer handler */ +setup_timer (&np->oom_kick, nv_do_rx_refill, (unsigned long )dev); +setup_timer (&np->nic_poll, nv_do_nic_poll, (unsigned long )dev); +setup_timer_deferrable (&np->stats_poll, nv_do_stats_poll, + (unsigned long )dev); err =pci_enable_device (pci_dev);if (err)
drivers/net/ethernet/qlogic/qlge/qlge_main.c +1 -3
@@ -4707,9 +4707,7 @@ static int __devinit qlge_probe(struct pci_dev *pdev,/* Start up the timer to trigger EEH if * the bus goes dead */ -init_timer_deferrable (&qdev->timer); - qdev->timer.data = (unsigned long )qdev; - qdev->timer.function = ql_timer; +setup_timer_deferrable (&qdev->timer, ql_timer, (unsigned long )qdev); qdev->timer.expires = jiffies + (5 *HZ );add_timer (&qdev->timer);ql_link_off (qdev);
drivers/net/vxlan.c +2 -3
@@ -995,9 +995,8 @@ static void vxlan_setup(struct net_device *dev)spin_lock_init (&vxlan->hash_lock); -init_timer_deferrable (&vxlan->age_timer); - vxlan->age_timer.function = vxlan_cleanup; - vxlan->age_timer.data = (unsigned long ) vxlan; +setup_timer_deferrable (&vxlan->age_timer, vxlan_cleanup, + (unsigned long )vxlan);inet_get_local_port_range (&low, &high); vxlan->port_min = low;
kernel/workqueue.c +2 -4
@@ -3845,10 +3845,8 @@ static int __init init_workqueues(void)INIT_LIST_HEAD (&pool->worklist);INIT_LIST_HEAD (&pool->idle_list); -init_timer_deferrable (&pool->idle_timer); - pool->idle_timer.function = idle_worker_timeout; - pool->idle_timer.data = (unsigned long )pool; - +setup_timer_deferrable (&pool->idle_timer, + idle_worker_timeout, (unsigned long )pool);setup_timer (&pool->mayday_timer, gcwq_mayday_timeout, (unsigned long )pool);
net/mac80211/agg-rx.c +6 -6
@@ -294,14 +294,14 @@ void ieee80211_process_addba_request(struct ieee80211_local *local,spin_lock_init (&tid_agg_rx->reorder_lock);/* rx timer */ - tid_agg_rx->session_timer.function = sta_rx_agg_session_timer_expired; - tid_agg_rx->session_timer.data = (unsigned long )&sta->timer_to_tid[tid]; -init_timer_deferrable (&tid_agg_rx->session_timer); +setup_timer_deferrable (&tid_agg_rx->session_timer, + sta_rx_agg_session_timer_expired, + (unsigned long )&sta->timer_to_tid[tid]);/* rx reorder timer */ - tid_agg_rx->reorder_timer.function = sta_rx_agg_reorder_timer_expired; - tid_agg_rx->reorder_timer.data = (unsigned long )&sta->timer_to_tid[tid]; -init_timer (&tid_agg_rx->reorder_timer); +setup_timer (&tid_agg_rx->reorder_timer, + sta_rx_agg_reorder_timer_expired, + (unsigned long )&sta->timer_to_tid[tid]);/* prepare reordering buffer */ tid_agg_rx->reorder_buf =
net/mac80211/agg-tx.c +6 -6
@@ -535,14 +535,14 @@ int ieee80211_start_tx_ba_session(struct ieee80211_sta *pubsta, u16 tid, tid_tx->timeout = timeout;/* response timer */ - tid_tx->addba_resp_timer.function = sta_addba_resp_timer_expired; - tid_tx->addba_resp_timer.data = (unsigned long )&sta->timer_to_tid[tid]; -init_timer (&tid_tx->addba_resp_timer); +setup_timer (&tid_tx->addba_resp_timer, + sta_addba_resp_timer_expired, + (unsigned long )&sta->timer_to_tid[tid]);/* tx timer */ - tid_tx->session_timer.function = sta_tx_agg_session_timer_expired; - tid_tx->session_timer.data = (unsigned long )&sta->timer_to_tid[tid]; -init_timer_deferrable (&tid_tx->session_timer); +setup_timer_deferrable (&tid_tx->session_timer, + sta_tx_agg_session_timer_expired, + (unsigned long )&sta->timer_to_tid[tid]);/* assign a dialog token */ sta->ampdu_mlme.dialog_token_allocator++;
net/sched/cls_flow.c +2 -3
@@ -457,9 +457,8 @@ static int flow_change(struct sk_buff *in_skb, f->mask = ~0U ;get_random_bytes (&f->hashrnd,4 ); - f->perturb_timer.function = flow_perturbation; - f->perturb_timer.data = (unsigned long )f; -init_timer_deferrable (&f->perturb_timer); +setup_timer_deferrable (&f->perturb_timer, flow_perturbation, + (unsigned long )f); }tcf_exts_change (tp, &f->exts, &e);
net/sched/sch_sfq.c +2 -3
@@ -739,9 +739,8 @@ static int sfq_init(struct Qdisc *sch, struct nlattr *opt)struct sfq_sched_data *q =qdisc_priv (sch);int i; - q->perturb_timer.function = sfq_perturbation; - q->perturb_timer.data = (unsigned long )sch; -init_timer_deferrable (&q->perturb_timer); +setup_timer_deferrable (&q->perturb_timer, sfq_perturbation, + (unsigned long )sch);for (i =0 ; i <SFQ_MAX_DEPTH +1 ; i++) { q->dep[i].next = i +SFQ_MAX_FLOWS ;
Signature · 1 line
1.7.9.5
2012/10/19 Joonsoo Kim <[email protected]>:
Quoted 25 lines
This patchset introduces
setup_timer_deferrable()macro. Using it makes code simple and understandable.This patchset doesn't make any functional difference. It is just for clean-up.
It is based on v3.7-rc1
Joonsoo Kim (2):
timer: addsetup_timer_deferrable()macro
timer: use newsetup_timer_deferrable()macrodrivers/acpi/apei/ghes.c | 5 ++--- drivers/ata/libata-core.c | 5 ++--- drivers/net/ethernet/nvidia/forcedeth.c | 13 ++++--------- drivers/net/ethernet/qlogic/qlge/qlge_main.c | 4 +--- drivers/net/vxlan.c | 5 ++--- include/linux/timer.h | 2 ++ kernel/workqueue.c | 6 ++---- net/mac80211/agg-rx.c | 12 ++++++------ net/mac80211/agg-tx.c | 12 ++++++------ net/sched/cls_flow.c | 5 ++--- net/sched/sch_sfq.c | 5 ++--- 11 files changed, 31 insertions(+), 43 deletions(-)
Quoted 2 lines
--
1.7.9.5
Hello, Thomas.
Will you pick this for your tree?
Or is there anything wrong with it?
Thanks.